7

I'm migrating my project from grails 2.2 to 2.3 and when I do test-app (on IDEA 12.1.6), I got this error

| 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

My BuildConfig.groovy look like this:

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"
    }
}

What's wrong ?

tim_yates
  • 167,322
  • 27
  • 342
  • 338
Thermech
  • 4,371
  • 2
  • 39
  • 60

1 Answers1

8

In order to take advantage of the new Grails fork test functionality in IntelliJ at the moment, you need to find the grails-rt.jar file under your IntelliJ installation directory, and copy it to your grails project lib dir, or make it available to your grails application via the class path.

In my case, on Mac OS X, the grails-rt.jar file was located in:

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

and I copied this file to ~/MyGrailsApp/lib.

approxiblue
  • 6,982
  • 16
  • 51
  • 59
Ryan Grow
  • 149
  • 1
  • 8
  • Thanks, I'll try this as soon as possible and I'll give you feedback ;) – Thermech Mar 12 '14 at 15:27
  • This worked for me but it seems like it should be brought up in a JIRA ticket or bug report for intellij. – anataliocs Mar 25 '14 at 21:00
  • 1
    It looks like there are at least a couple of tickets: http://youtrack.jetbrains.com/issue/IDEA-115855, and http://youtrack.jetbrains.com/issue/IDEA-115097 – Ryan Grow Mar 26 '14 at 22:23
  • 1
    As noted in the IDEA ticket @RyanGrow mentioned, you can set: grails.project.fork = [ test: false, ... ] in your BuildConfig as a workaround. – RMorrisey May 16 '14 at 21:40