Мне нужно построить проект (родительский и EAR, содержащий jar, ejb и 2 боевых модуля) от RAD 9.5 и с maven.Maven и RAD производят разные EAR
Когда я строю проект из командной строки maven, все работает нормально. Это создает тощий архив войн, который работает на WebSphere 8.5.5.
При попытке обновления проекта из RAD или для экспорта EAR я получаю файл, который отличается и не будет работать, с ClassNotFoundException для одной из зависимостей EJB.
Глядя далее, я узнал, что в MANAPEST.MF есть разница в разделе classpath. Maven проект поставил там экземпляры с Lib/префиксом и М2Э/РАУ без, как это:
Class-Path: lib/log4j-api-2.6.jar lib/log4j-core-2.6.jar lib/junit-4.12.jar lib/hamcrest-core-1.3.
в чистом мавена и:
Class-Path: log4j-api-2.6.jar log4j-core-2.6.jar junit-4.12.jar hamcrest-core-1.3.
Я пытался обновить проект, играл с настройками пОМ. Это самое близкое к рабочему приложению.
Моя текущая конфигурация EJB плагин:
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
<ejbVersion>3.1</ejbVersion>
</configuration>
</plugin>
И исключение (самый низкий уровень):
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:600)
at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:243)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:786)
at java.lang.ClassLoader.loadClass(ClassLoader.java:764)
at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:62)
at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:585)
at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
... 75 more
Я полагаю, что это вопрос, но я не знаю, жарко, чтобы это исправить.
Update: пытался добавить явить раздел:
<classpathPrefix>lib/</classpathPrefix>
тот же результат.
Если вы создаете поддержку файлов EAR для тощих войн, те файлы, которые были извлечены, должны быть расположены где-то, что означает, что в случае EAR в папку lib на уровне EAR. Я не знаю, что делает RAD здесь ... – khmarbaise
Да, они есть. Просто не упоминается ниоткуда. Также см. Обновление для вопроса. – Anton
Исключения испускаются сервером приложений Websphere, если вы развернули файл EAR? – khmarbaise