Geotoolsを使用するアプリケーションを開発しています.GeartfishはJava Advanced Imaging(JAI)APIを使用してGlassfishで動作します。私はEJB JARファイルとしてはNetbeansから自分のアプリケーションを実行すると、それがためにCDIのスキャン中にClassNotFoundExceptionの展開に失敗する:JavaアドバンストイメージングはMacのGlassfishのEJBモジュールでは使用できませんが、EARには表示されます
com.google.common.collect.ComputationException: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.autogena.skyserver.data.filetypes.SwathFile
at com.google.common.collect.ComputingConcurrentHashMap.compute(ComputingConcurrentHashMap.java:218)
....
Caused by: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.autogena.skyserver.data.filetypes.SwathFile
at org.jboss.weld.resources.ClassTransformer.loadClass(ClassTransformer.java:189)
.....
Caused by: java.lang.NoClassDefFoundError: javax/media/jai/PropertySource
at java.lang.ClassLoader.defineClass1(Native Method)
....
Caused by: java.lang.ClassNotFoundException: javax.media.jai.PropertySource
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
しかし、私はEARファイルにEJBモジュールをパッケージ化した場合、私は得ることはありません上の例外とそれはOKをロードするようだ。
MacではJAIコアクラスがシステム拡張ライブラリに入っているので、クラスパス上にどのように表示されないのか困惑しています。
クラス読み込み時にEJB jarファイルとEARファイルの間に違いがありますか?これはGlassfish/Weldで大きくなりますか?
グラスフィッシュは私のprjectがとにかく使っているライブラリを見つけるのですか?彼らはejb jarファイルにパッケージ化されていないようです - ここで何か賢明なやり方をしているのですか?
おかげで、 ジョシュ