【问题标题】:Grails war without tomcat plugin没有tomcat插件的Grails战争
【发布时间】:2012-11-21 15:26:36
【问题描述】:

当我使用 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 生命周期事件 严重:创建命名上下文失败: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 插件,应用程序启动没有问题。 理想情况下,我想在没有插件的情况下构建应用程序,但出于开发目的。这可能吗?

【问题讨论】:

    标签: tomcat grails


    【解决方案1】:

    对于初学者,请使用与您正在使用的 Grails 版本相对应的 Tomcat 插件版本。但真正的问题是,该插件应该只在 run-apprun-war 脚本的开发中可用,但不应该出现在由 war 脚本创建的 WAR 文件中。如果您在 application.properties 中有插件,请将其删除(连同那里的任何其他插件)。这会将插件置于compile 范围内,并将导致它位于 WAR 文件中。

    使用插件的正确方法是在BuildConfig.groovyplugins部分添加build范围依赖:

    plugins {
       runtime ":hibernate:$grailsVersion"
       build ":tomcat:$grailsVersion"
    }
    

    【讨论】:

    • 我在 2.1.1 中遇到了这个问题。我的 application.properties 文件中没有插件,tomcat 版本是$grailsVersion。 Bamboo 处理我的构建。知道为什么会这样吗?
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    相关资源
    最近更新 更多