当我运行grails run-app命令时,我发现Caching已停用,无法创建缓存

时间:2014-11-13 21:24:25

标签: grails embedded-tomcat-7 run-app

我在Windows上使用Grails 2.3.5并使用命令行中的grails create-app命令创建了项目。当我从命令行运行grails run-app --verbose时,我得到以下异常。

Caching deactivated: failed to create cache directory: C:/grails/2.3.5/
java.lang.NoClassDefFoundError: org/apache/catalina/startup/Tomcat
  at...
Caused by: java.lang.ClassNotFoundException: org.apache.cataliina.startup.Tomcat

以下是我的BuildConfig.groovy文件的一部分

...
      dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
        //compile 'xlan:serializer:jar:2.7.1'
        // runtime 'mysql:mysql-connector-java:5.1.27'
        // runtime 'org.postgresql:postgresql:9.3-1100-jdbc41'
        //These were added for mongodb
        compile 'org.grails:grails-datastore-gorm:3.1.0.RELEASE'
        compile 'org.grails:grails-datastore-core:3.1.0.RELEASE'
        test 'org.grails:grails-datastore-simple:3.1.0.RELEASE'
        compile "net.sf.ehcache:ehcache-core:2.4.6"
        compile 'org.grails:grails-async:jar:2.3.8'
        compile 'org.springframework:spring-tx:3.2.8.RELEASE'
    }

    plugins {
        // plugins for the build system only
        //build ":serializer:2.7.1"
        build ':tomcat:7.0.50'
        // plugins for the compile step
        compile ":scaffolding:2.0.1"

        //compile ':cache:1.1.1'
        compile ':mongodb:3.0.1'
        compile ":jquery-ui:1.10.3"

        compile ":spring-security-core:2.0-RC4"
        // plugins needed at runtime but not for compilation
       // runtime ":hibernate:3.6.10.7" // or ":hibernate4:4.1.11.6"
        runtime ":database-migration:1.3.8"
        runtime ":jquery:1.10.2.2"
        runtime ":resources:1.2.1"
        // Uncomment these (or add new ones) to enable additional resources capabilities
        //runtime ":zipped-resources:1.0.1"
        //runtime ":cached-resources:1.1"
        //runtime ":yui-minify-resources:0.1.5"
    }...

我正在运行指向本地存储库的grails脱机模式。 这只是在我在Groovy / Grails工具套件文件夹中将下面列出的jar添加到我的lib文件夹后才能成功编译,这样它们就会在类路径中 (这修复了catalina中的TomcatKillSwitch错误)

  1. catalina.jar
  2. catalina-ant.jar
  3. catalina-ha.jar
  4. catalina-tribes.jar
  5. Tomcat的api.jar文件
  6. tomcat-coyote.jar
  7. Tomcat的util.jar
  8. 为什么无法找到Tomcat,为什么不能创建缓存?

1 个答案:

答案 0 :(得分:0)

删除那些jar文件;你可能已经修复了'这个问题,但你真的只是隐藏了一个症状,问题仍然存在,并且可能会在下次添加插件时重新出现。继续并删除lib目录 - 它可能会继续诱惑你的存在。

在我看来,核心问题很简单,也很明确; Grails无法创建C:/grails/2.3.5/。副作用没有明确说明,其中一个是Grails无法正确解压Tomcat插件(也可能是其他人)并使用源和jar依赖项扩充类路径。

对此问题的正确解决方法是升级到合理的操作系统。我建议使用Linux,其他人会觉得自己很幸运能够成为一大群怪异的志同道合的人中的一员。并建议OSX,但除了Windows之外什么都不会。

如果你要承担手动创建c:\grails的使命,我会在这里走出困境并宣称你可以结束这个黑暗贫困时期。默认情况下,您无法在最新版本的Windows中的C:驱动器的根目录中创建文件或目录;当然这是可能的,而且你会被问到太多的问题"你确定这个问题的类型问题,但它可以做到。

然后重新启动后,您将获得缓存,因为Grails将能够创建2.3.5目录,解压缩插件,并以编程方式引用先前下载的/缓存的Tomcat jar,而不必将它们放入lib目录。