【问题标题】:Grails 2.2 to 2.3 - Error running forked test-app: Could not load grails build listener classGrails 2.2 到 2.3 - 运行分叉测试应用程序时出错:无法加载 grails 构建侦听器类
【发布时间】:2013-10-27 00:23:55
【问题描述】:

我正在将我的项目从 grails 2.2 迁移到 2.3,当我执行 test-app(在 IDEA 12.1.6 上)时,我收到了这个错误

| Error Error running forked test-app: Could not load grails build listener class
java.lang.RuntimeException: Could not load grails build listener class
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.addGrailsBuildListener(GrailsBuildEventListener.java:258)
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.loadGrailsBuildListeners(GrailsBuildEventListener.java:106)
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.initialize(GrailsBuildEventListener.java:73)
    at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProjectClassExecutor.createEventListener(ForkedGrailsProjectClassExecutor.groovy:102)
    at org.codehaus.groovy.grails.cli.fork.testing.ForkedGrailsTestRunner.createInstance(ForkedGrailsTestRunner.groovy:93)
    at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProjectClassExecutor.initializeProjectInstance(ForkedGrailsProjectClassExecutor.groovy:85)
    at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProjectClassExecutor.run(ForkedGrailsProjectClassExecutor.groovy:72)
    at org.codehaus.groovy.grails.cli.fork.testing.ForkedGrailsTestRunner.main(ForkedGrailsTestRunner.groovy:75)
Caused by: java.lang.ClassNotFoundException: org.jetbrains.groovy.grails.rt.GrailsIdeaTestListener
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:648)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:758)
    at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:746)
    at org.codehaus.groovy.grails.cli.support.GrailsBuildEventListener.addGrailsBuildListener(GrailsBuildEventListener.java:255)
    ... 7 more
| Error Error running forked test-app: Could not load grails build listener class
| Error Forked Grails VM exited with error

我的 BuildConfig.groovy 如下所示:

grails.servlet.version = "3.0" 
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.work.dir = "target/work"
grails.project.target.level = 1.6
grails.project.source.level = 1.6

grails.project.fork = [
    test: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, daemon:true],
    run: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    war: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256, forkReserve:false],
    console: [maxMemory: 768, minMemory: 64, debug: false, maxPerm: 256]
]

grails.project.dependency.resolver = "maven" // or ivy

grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // specify dependency exclusions here; for example, uncomment this to disable ehcache:
        // excludes 'ehcache'
    }
    log "error" 
    checksums true 
    legacyResolve false 

    repositories {
        inherits true // Whether to inherit repository definitions from plugins

        grailsPlugins()
        grailsHome()
        mavenLocal()
        grailsCentral()
        mavenCentral()
    }

    dependencies {
        runtime 'mysql:mysql-connector-java:5.1.24'
    }

    plugins {
        build ":tomcat:7.0.42"

        compile ":scaffolding:2.0.1"
        compile ':cache:1.1.1'

        runtime ":hibernate:3.6.10.2" // or ":hibernate4:4.1.11.2"
        runtime ":jquery:1.10.2"
        runtime ":resources:1.2.1"
    }
}

怎么了?

【问题讨论】:

  • 你是否也尝试过不使用分叉的JVM?
  • 是的,“未分叉”它运行良好,但我也想使用分叉模式
  • 这有什么更新吗?找到解决方案了吗?
  • 我只是尝试使用 2.3.4,但我仍然遇到完全相同的问题
  • jetbrain youtrack.jetbrains.net/issue/IDEA-61453有一个问题

标签: grails intellij-idea grails-2.2 grails-2.3


【解决方案1】:

为了利用 IntelliJ 中新的 Grails fork 测试功能,您需要 find the grails-rt.jar file under your IntelliJ installation directory,并将其复制到您的 grails 项目 lib 目录,或通过类路径将其提供给您的 grails 应用程序.

就我而言,在 Mac OS X 上,grails-rt.jar 文件位于:

/Applications/IntelliJ\ IDEA\ 13.app/plugins/Grails/lib/grails-rt.jar

我将此文件复制到~/MyGrailsApp/lib

【讨论】:

  • 谢谢,我会尽快尝试,我会给你反馈;)
  • 这对我有用,但它似乎应该在 intellij 的 JIRA 票证或错误报告中提出。
  • 正如提到的 IDEA 票 @RyanGrow 中所述,您可以在 BuildConfig 中设置:grails.project.fork = [ test: false, ... ] 作为解决方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
相关资源
最近更新 更多