我将我的grails应用程序转换为maven项目。在我的pom.xml中,我有以下依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.1.RELEASE</version>
</dependency>
我的应用程序以 grails run-app 开头,但是当我通过 maven compile install 构建war时,tomcat中的部署失败并出现以下错误
ERROR context.GrailsContextLoaderListener - Error initializing Grails: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class
java.lang.IncompatibleClassChangeError: class org.springframework.core.LocalVariableTableParameterNameDiscoverer$ParameterNameDiscoveringVisitor has interface org.springframework.asm.ClassVisitor as super class
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:0)
如果您的应用程序使用run-app运行,您应该能够使用grails war构建并以此方式部署而不是使用Maven。
https://grails.github.io/grails-doc/latest/ref/Command%20Line/war.html
默认情况下,war命令使用应用程序名称和版本号创建Web应用程序归档(WAR)文件。 war命令与大多数命令不同,因为它默认在生产环境中运行而不是开发,但是像任何脚本一样,环境可以使用标准约定来指定: