我将一场用“grails war”制作的战争部署到码头服务器上。
据我所知,Grails使用Sun JDK 1.6.0_17-b04构建,jetty在Sun JDK 1.6.0.16上运行(均在Linux上运行)。
2010-08-18 07:33:47.018:WARN::Nested in org.springframework.beans.factory.access.BootstrapException: Error executing bootstraps; nested exception is org.codehaus.groovy.runtime.InvokerInvocationException:
java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for java.lang.ClassLoader do not match. Expected 3 but got 2:
java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for java.lang.ClassLoader do not match. Expected 3 but got 2
at grails.plugin.scopedproxy.AlwaysReloadableSmartClassLoader.<init>(AlwaysReloadableSmartClassLoader.groovy:28)
at grails.plugin.scopedproxy.ScopedProxyUtils.wrapInSmartClassLoader(ScopedProxyUtils.groovy:154)
如何解决或调试此问题?
答案 0 :(得分:11)
在运行grails clean
之前运行grails war
。
答案 1 :(得分:3)
根据another post,使用在7之前的Java版本编译的异常的Groovy代码与Java 7不兼容。
可以找到更多信息here。
答案 2 :(得分:0)
您可能遇到了JAR冲突。即您的构建环境使用一个jar,而运行时(Jetty)正在使用冲突的jar。过去常常会出现各种XML解析堆栈。
尝试查看jetty使用的jar并将它们与项目中的jar进行比较。