我正在使用Maven构建一个Grails 1.3.7项目。它构建在我的机器上,但在构建服务器上,我得到一个AsyncException,这对我来说并不意味着什么:
[INFO] [grails:maven-grails-app-war]
[INFO] Using Grails 1.3.7
AsyncException{concurrentExceptions=[
java.lang.NoClassDefFoundError: org.codehaus.groovy.runtime.RegexSupport
]}
at groovyx.gpars.AsyncInvokerUtil.eachParallel(AsyncInvokerUtil.groovy:106)
at grails.util.BuildSettings$_configureDependencyManager_closure6.doCall(BuildSettings.groovy:784)
at groovyx.gpars.Asynchronizer$_withExistingAsynchronizer_closure2.doCall(Asynchronizer.groovy:262)
at groovyx.gpars.Asynchronizer$_withExistingAsynchronizer_closure2.doCall(Asynchronizer.groovy)
at groovyx.gpars.Asynchronizer.withExistingAsynchronizer(Asynchronizer.groovy:261)
at groovyx.gpars.Asynchronizer$withExistingAsynchronizer.callStatic(Unknown Source)
at groovyx.gpars.Asynchronizer.doParallel(Asynchronizer.groovy:157)
at groovyx.gpars.Asynchronizer$doParallel$0.callStatic(Unknown Source)
at groovyx.gpars.Asynchronizer.doParallel(Asynchronizer.groovy:131)
at groovyx.gpars.Asynchronizer$doParallel.call(Unknown Source)
at grails.util.BuildSettings.configureDependencyManager(BuildSettings.groovy:782)
at grails.util.BuildSettings$configureDependencyManager.callCurrent(Unknown Source)
at grails.util.BuildSettings.postLoadConfig(BuildSettings.groovy:682)
at grails.util.BuildSettings.loadConfig(BuildSettings.groovy:671)
at grails.util.BuildSettings$loadConfig$0.callCurrent(Unknown Source)
at grails.util.BuildSettings.loadConfig(BuildSettings.groovy:653)
at grails.util.BuildSettings$loadConfig.callCurrent(Unknown Source)
at grails.util.BuildSettings.loadConfig(BuildSettings.groovy:630)
at org.grails.maven.plugin.AbstractGrailsMojo.runGrails(AbstractGrailsMojo.java:286)
at org.grails.maven.plugin.MvnWarMojo.execute(MvnWarMojo.java:49)
at org.grails.maven.plugin.MvnGrailsAppWarMojo.execute(MvnGrailsAppWarMojo.java:53)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:447)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:333)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:126)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:282)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
WARNING: There was an error loading the BuildConfig: Some asynchronous operations failed.
[java.lang.NoClassDefFoundError: org.codehaus.groovy.runtime.RegexSupport]
AsyncException{concurrentExceptions=[
java.lang.NoClassDefFoundError: org.codehaus.groovy.runtime.RegexSupport
]}
你知道是什么原因导致的吗?我什么也没得到,但是我的机器和构建服务器之间的一个区别是构建服务器使用IBM JDK (WAS 6.1 JDK)。
我试着在我的机器上通过指向IBM JDK来重现这个,但是我唯一能找到的是Java 6 JDK,构建服务器的JDK是1.5.0。
这是我们添加到BuildConfig中的丑陋hack。groovy来解决IBM JDK的问题
// IBM JDK Bug workaround
this.getClass().getClassLoader().loadClass("org.codehaus.groovy.runtime.RegexSupport")
this.getClass().getClassLoader().loadClass("org.codehaus.groovy.runtime.DefaultGroovyMethods")
我确实有机会用WAS 7/Java 1.6测试我们的一个应用程序,当我删除那个工作时,我没有遇到这个问题。