Война Grails без плагина tomcat

avatar
nialloc
4 декабря 2012 в 03:16
2705
1
2

Когда я создаю приложение grails 2.1.0 с tomcat 2.2.0, при развертывании на Tomcat 7 я получаю следующую ошибку при запуске:

ИНФОРМАЦИЯ: validateJarFile (/app/app/webapps/ROOT/WEB-INF/lib/tomcat-embed-core-7.0.27.jar) - jar не загружен. См. Спецификацию сервлета 2.3, раздел 9.7.2. Класс нарушения: javax / servlet / Servlet.class 1 декабря 2012 г. 16:01:01 org.apache.catalina.core.NamingContextListener lifecycleEvent СЕРЬЕЗНО: не удалось создать контекст именования: javax.naming.NamingException: контекст доступен только для чтения

и

java.lang.NoClassDefFoundError: org / apache / tomcat / PeriodicEventListener в java.lang.ClassLoader.defineClass1 (собственный метод) в java.lang.ClassLoader.defineClass (ClassLoader.java:634) в java.security.SecureClassLoader.defineClass (SecureClassLoader.java:142) в org.apache.catalina.loader.WebappClassLoader.findClassInternal (WebappClassLoader.java:2818) в org.apache.catalina.loader.WebappClassLoader.findClass (WebappClassLoader.java:1159) в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1647) в org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1526) в org.apache.catalina.core.StandardWrapper.loadServlet (StandardWrapper.java:1128) в org.apache.catalina.core.StandardWrapper.load (StandardWrapper.java:1026)

Если я удалю файлы tomcat- * jar во взорванной войне, приложение запустится без проблем, или если я удалю плагин tomcat, приложение запустится без проблем. В идеале я хотел бы создать приложение без плагина, но для целей разработки. Возможно ли это?

Источник

Ответы (1)

avatar
Burt Beckwith
4 декабря 2012 в 05:12
3

Для начала используйте версию подключаемого модуля Tomcat, соответствующую используемой вами версии Grails. Однако настоящая проблема заключается в том, что плагин должен быть доступен в разработке только для сценариев run-app и run-war, но не должен попадать в WAR-файл, созданный сценарием war. Если у вас есть плагин в application.properties, удалите его (вместе с любыми другими плагинами, которые там есть). Это помещает плагин в область compile и приведет к тому, что он окажется в файле WAR.

Правильный способ использования плагина - добавить зависимость области build в раздел plugins в BuildConfig.groovy:

plugins {
   runtime ":hibernate:$grailsVersion"
   build ":tomcat:$grailsVersion"
}
John Giotta
28 мая 2013 в 14:38
0

Я столкнулся с этой проблемой в версии 2.1.1. В моем файле application.properties нет плагинов, а версия tomcat - $grailsVersion. Бамбук обрабатывает мои сборки. Есть идеи, почему это происходит?