Расширенные возможности создания образов Java недоступны для модулей EJB в Glassfish на Mac, но отображаются в EAR - PullRequest
0 голосов
/ 13 мая 2011

Я занимаюсь разработкой приложения, которое использует Geotools, которое, в свою очередь, использует API расширенной визуализации Java (JAI) для работы под Glassfish. Когда я запускаю свое приложение из Netbeans как файл JAR EJB, оно не может быть развернуто из-за исключения ClassNotFoundException во время сканирования CDI:

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)

Однако, если я упакую модуль EJB в файл EAR, я не получу исключение, описанное выше, и, похоже, он загрузится нормально.

Поскольку на Mac базовые классы JAI находятся в библиотеке расширений системы, я озадачен тем, как они не отображаются на пути к классам.

Есть ли разница между файлом JAR EJB и файлом EAR, когда дело доходит до загрузки класса, или это большая проблема в Glassfish / Weld?

Если подумать - как стеклянная рыбка в любом случае находит библиотеки, которые использует мой prject - они, похоже, не упакованы в файл ejb jar - netbeans делает что-то умное под капотом, что как-то искажается?

спасибо, Джош

1 Ответ

0 голосов
/ 10 сентября 2011

Попробуйте настроить CLASSPATH на Glassfish для использования библиотек JAI.

...