尝试运行Application时出现Tomcat ClassNotFound异常

时间:2011-12-28 19:51:38

标签: grails sts-springsourcetoolsuite

我有一个grails应用程序,我运行正常,直到昨天我决定将电子邮件插件下载到STS。由于某种原因,下载失败了,我绕过了一些搜索问题。一旦我解决了插件问题,我的应用程序就停止工作了。我尝试了很多东西,包括重新安装STS。我正在维护一个GIT存储库,我将所有更改恢复到最后一个已知的工作存储库。这也没有帮助。我创建了一个新的Grails项目并将所有源文件复制到那里,一切正常。

我比较了工作路径和非工作路径之间的所有构建路径和属性文件,它们似乎是相同的,除了每次我尝试运行应用程序时都会改变的.classpath,如下所示

+       <classpathentry exported="true" kind="con" path="GROOVY_DSL_SUPPORT"/>
        <classpathentry kind="con" path="com.springsource.sts.grails.core.CLASSP
-       <classpathentry kind="src" path=".link_to_grails_plugins/tomcat-1.3.7/sr
-               <attributes>
-                       <attribute name="com.springsource.sts.grails.core.SOURCE
-               </attributes>
-       </classpathentry>

任何人都可以帮助我找到我应该让这个应用程序重回正轨的地方吗?

这是我得到的错误:

    Welcome to Grails 1.3.7 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Users/mymac/springsource/grails-1.3.7/
Base Directory: /Users/mymac/MyProjects/MyGitSources/books_grails/books
Resolving dependencies...
Dependencies resolved in 862ms.
Running script /Users/mymac/springsource/grails-1.3.7/scripts/RunApp.groovy
Environment set to development
     [copy] Copying 1 file to /Users/mymac/.grails/1.3.7/projects/books
WARNING: No default container found, installing Tomcat..
Resolving plugin tomcat. Please wait...
Error executing script RunApp: java.lang.ClassNotFoundException: org.grails.tomcat.TomcatServerFactory
java.lang.ClassNotFoundException: org.grails.tomcat.TomcatServerFactory
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:391)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
    at gant.Gant.withBuildListeners(Gant.groovy:427)
    at gant.Gant.this$2$withBuildListeners(Gant.groovy)
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
    at gant.Gant.dispatch(Gant.groovy:415)
    at gant.Gant.this$2$dispatch(Gant.groovy)
    at gant.Gant.invokeMethod(Gant.groovy)
    at gant.Gant.executeTargets(Gant.groovy:590)
    at gant.Gant.executeTargets(Gant.groovy:589)
Caused by: java.lang.ClassNotFoundException: org.grails.tomcat.TomcatServerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java_lang_ClassLoader$loadClass.call(Unknown Source)
    at _GrailsRun_groovy$_loadServerFactory_closure11.doCall(_GrailsRun_groovy:85)
    at _GrailsRun_groovy.loadServerFactory(_GrailsRun_groovy:101)
    at _GrailsRun_groovy.this$4$loadServerFactory(_GrailsRun_groovy)
    at _GrailsRun_groovy$this$4$loadServerFactory.callCurrent(Unknown Source)
    at _GrailsRun_groovy.runInline(_GrailsRun_groovy:114)
    at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
    at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
    at RunApp$_run_closure1.doCall(RunApp:33)
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
    ... 10 more
--- Nested Exception ---
java.lang.ClassNotFoundException: org.grails.tomcat.TomcatServerFactory
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java_lang_ClassLoader$loadClass.call(Unknown Source)
    at _GrailsRun_groovy$_loadServerFactory_closure11.doCall(_GrailsRun_groovy:85)
    at _GrailsRun_groovy.loadServerFactory(_GrailsRun_groovy:101)
    at _GrailsRun_groovy.this$4$loadServerFactory(_GrailsRun_groovy)
    at _GrailsRun_groovy$this$4$loadServerFactory.callCurrent(Unknown Source)
    at _GrailsRun_groovy.runInline(_GrailsRun_groovy:114)
    at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
    at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
    at RunApp$_run_closure1.doCall(RunApp:33)
    at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
    at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
    at gant.Gant.withBuildListeners(Gant.groovy:427)
    at gant.Gant.this$2$withBuildListeners(Gant.groovy)
    at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
    at gant.Gant.dispatch(Gant.groovy:415)
    at gant.Gant.this$2$dispatch(Gant.groovy)
    at gant.Gant.invokeMethod(Gant.groovy)
    at gant.Gant.executeTargets(Gant.groovy:590)
    at gant.Gant.executeTargets(Gant.groovy:589)
Error executing script RunApp: java.lang.ClassNotFoundException: org.grails.tomcat.TomcatServerFactory

[UPDATE]:

当我尝试再次在我的新工作项目中安装邮件插件时,如果我尝试运行我的应用程序,则会再现相同的错误。不知何故,该插件搞砸了我的应用程序。现在我不知道插件是如何安装的以及它们在项目中的变化: - (

谢谢!

1 个答案:

答案 0 :(得分:1)

将其作为答案发布,以防任何人需要找到解决方案......

我从〜/ .grails下删除了所有项目,并清除了我的Project引用的文件。我将我的项目重新导入STS,然后又重新开始工作。

我想问题是因为邮件插件。由于我的maven存储库在BuildConfig.groovy中被注释掉了

//mavenLocal()
//mavenCentral()

插件安装失败,不知何故弄乱了我的项目。我创建了一个临时项目,安装了这些插件,上面的行没有注释,清理了上面提到的原始项目并重新构建了我的项目。

由于现在我的插件在本地可用,我可以毫不费力地将它们安装到我的主项目中。

虽然不是一个干净的,并且不确定插件安装失败是否存在问题,但我发布这个以防再次遇到同样的问题!

谢谢!