【问题标题】:Tomcat Error - Grails App - NoClassDefFoundErrorTomcat 错误 - Grails 应用程序 - NoClassDefFoundError
【发布时间】:2011-09-17 06:12:24
【问题描述】:
2011-06-17 09:11:45,277 [main] ERROR com].[/]  - Exception sending context destroyed event to listener instance of class   org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener  
org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps;   
nested exception     is org.codehaus.groovy.runtime.InvokerInvocationException:   java.lang.NoClassDefFoundError: testProject.Checkin  

我只是想在 Grails 中“新建”一个普通的域类。以前从未遇到过这个问题(好吧,我是新手)我将“新”移动到 BootStrap.groovy 只是为了看看它是否与导致同样问题的控制器有关。没有。似乎整个 jar 都不知道 testProject.Checkin 类。
看到某处尝试 Xverify:none 作为 Tomcat 设置。我会在哪里设置这个? 我还应该做些什么来解决问题?

我使用的是最新版本的 Tomcat 7.0.14

【问题讨论】:

  • 你在创建战争之前尝试过 grails clean 吗?
  • 也尝试发布您的代码!我会说,也许你可能在某个地方有一些错误的导入?!
  • hvgotcodes,很棒的提示!以为我经常这样做。现在为什么这样做了?我可以理解一个类 def 可能已经过时了,但是它们是如何因不清理而丢失的呢?哦,这对我来说是一个非常好的答案。谢谢

标签: tomcat grails classloader noclassdeffounderror


【解决方案1】:

上面的 cmets 中针对您的实际问题提出了一个解决方案,但是您发布的关于如何将 vm args 传递给 Tomcat 的问题也值得回答。

从 grails 1.3.5 开始,您可以在执行操作时将 jvm args 显式传递给 Tomcat

$ grails run-war

为此,请在 Config.groovy 文件中添加以下内容

grails.tomcat.jvmArgs = ["-Xverify:none", "-Xmx1024m", "-XX:MaxPermSize=256m"]

如果您只是简单地运行 grails run-app,那么任何传递给 grails 的 jvm 参数都将包含在正在运行的 tomcat 实例中,因为该实例位于同一个 JVM 中。

http://www.grails.org/doc/latest/ref/Command%20Line/run-war.html

【讨论】:

  • 当您刚刚拥有 grails prod war 然后部署它时,这种方法是否也会将它们传递给 Tomcat? JVM启动后这些是如何传递的?
【解决方案2】:

你检查过基础知识吗?

运行'grails'war',看看你的类是否编译并在war里面?

它可以在 grails run-app 中运行,但不能在 tomcat 中运行吗?

您在什么环境中工作? SpringSource ToolSuite (STS) 现在为 Eclipse(即 Tomcat)管理的服务器提供了 Grails“在服务器上运行”选项,可以帮助您快速启动和运行环境。

请注意,Grails 1.3.x 附带 Tomcat 6.0.x,最新的 1.4M1 里程碑版本支持 Tomcat7,因此您可能想尝试一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多