2010-11-16 3 views
0

Из-за ограниченности памяти я пытаюсь создать приложение grails с меньшим размером памяти. Я строю войну с этим аргументом «--nojars». Я создал военный файл без всякой банки и когда я развертываю в стеклянную рыбку, я сталкиваюсь с этой ошибкой.Grails - пытается развернуть приложение nojars в стеклянную рыбку 3.0.1

Исключение при загрузке приложения: java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org. apache.catalina.LifecycleException: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: org.codehaus.groovy.grails.web.util.Log4jConfigListener

Похоже, что приложение не найти, где находится файл банка.

Я уже указывал путь к библиотеке перед развертыванием приложения в стеклянной платке.

Я пропустил что-то?

ответ

0

Обычно рекомендуется использовать GlassFish's Common Classloader. Это означает, что общий доступ к JARS в папку $ domain-dir/lib (но не в подпапку).

Возможно, вы используете Application Classloader с командой asadmin deploy --libraries. Это сложнее и подвержено ошибкам. Если вам не нужны разные версии одних и тех же JAR с различными веб-приложениями, вам обязательно нужно перейти на Common Classloader, как указано выше.

См. Также The Classloader Hierarchy для справки.


EDIT Дополнение за комментарий спрашивающий в:

Папка domain/domain1/lib определенно работает (я проверил это). Для подтверждения того, что, положить log4j.jar в эту папку и добавьте test.jsp к domain1/applications/$applicationName, что только содержит:

<% out.println(
    org.apache.log4j.Logger.getLogger(this.getClass())); %> 

Если это работает, но ваш другой код не делает, может быть другая точка рассмотреть: вы используя Logger.getLogger(..) Log4J или Apache Commons LogFactory.getInstance(..) в вашем коде?

См. Статью Taxonomy of class loader problems encountered when using Jakarta Commons Logging по смежным вопросам. - Я также хотел бы посоветовать вам опубликовать полный стек.

+0

Я попытался поместить всю банку в домен/domain1/lib или domain/domain1/lib/applibs или domain/domain1/lib/ext и весь файл класса в domain/domain1/lib/classes вместе со всей папкой в здесь также, но он по-прежнему дает мне ту же ошибку – kai

+0

Обратите внимание, что мой ответ был расширен. – robbbert

Смежные вопросы