2011-01-18 4 views
2

У меня есть EAR с двумя обычными библиотеками. Одна из них - scala-библиотека. Если я развожу EAR с Netbeans, он работает так, как ожидалось. Хотя это нормально для разработки, конечный продукт следует развертывать через командную строку. Для этого я использую:Как развернуть библиотеку с Java EE 6/Glassfish 3.x

asadmin --user … deploy --upload ./target/…-ear.ear 

который терпит неудачу с:

org.glassfish.api.admin.CommandException: remote failure: Error occurred during deployment: Exception while deploying the app […-ear] : C:\Work\Workspa 
ces\…\Glassfish\…\applications\scala-library-2.8.0.jar. Please see server.log for more details. 
Befehl deploy fehlgeschlagen. 

Поиск в сети я обнаружил, что обработку библиотеки стали более строгими с Java EE 6/Glassfish 3.x и что это не так достаточно, чтобы добавить их в папку lib внутри уха. Только автор пренебрегал упоминанием того, что нужно сейчас.

Я нашел новые <module><java> записи для META-INF\application.xml - но это не помогло:

<module> 
    <java>scala-library-2.8.0.jar</java> 
    </module> 

Итак, вопрос: Кто-нибудь знает, что вы должны сделать, чтобы добавить библиотеки в файл EAR для Java EE 6/Glassfish 3.x?

PS: Я использую Maven для сборки - если это имеет значение.

ответ

3

Ну, похоже, я нашел решение самостоятельно (снова). После добавления library-directory записи в конце в META-INF\application.xml развертывания работает ты:

<library-directory>lib</library-directory> 
</application> 

Самое странное, что lib по умолчанию для library-directory. Поэтому я предполагаю, что это ошибка в Glassfish, которая неправильно обрабатывает значение по умолчанию. Если вы используете Maven, обязательно используйте bundleDir в своем pom.xml, чтобы библиотеки были размещены в нужном месте:

 <jarModule> 
      <groupId>org.scala-lang</groupId> 
      <artifactId>scala-library</artifactId> 
      <bundleDir>lib</bundleDir> 
     </jarModule> 
Смежные вопросы