当我使用tomcat 2.2.0构建grails 2.1.0应用程序时,当我在Tomcat 7上部署时,我在启动时遇到以下错误:
INFO:validateJarFile(/app/app/webapps/ROOT/WEB-INF/lib/tomcat-embed-core-7.0.27.jar) - jar未加载。请参阅Servlet规范2.3,第9.7.2节。违规类:javax / servlet / Servlet.class 2012年12月1日下午4:01:01 org.apache.catalina.core.NamingContextListener lifecycleEvent 严重:命名上下文的创建失败:javax.naming.NamingException:上下文是只读的
和
java.lang.NoClassDefFoundError:org / apache / tomcat / PeriodicEventListener at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:634) at 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插件,应用程序启动没有问题。 理想情况下,我想在没有插件的情况下构建应用程序但是出于开发目的。这可能吗?
答案 0 :(得分:3)
对于初学者,请使用与您正在使用的Grails版本对应的Tomcat插件版本。但真正的问题是插件应仅在run-app
和run-war
脚本的开发中可用,但不应该最终出现在war
脚本创建的WAR文件中。如果您在application.properties中有插件,请将其删除(以及其中的任何其他插件)。这会将插件置于compile
范围内,并将导致它位于WAR文件中。
使用该插件的正确方法是在build
的{{1}}部分添加plugins
范围相关性:
BuildConfig.groovy