从 Eclipse 运行程序时,它工作正常。
在 Eclipse 之外运行它时,我得到了这个:
java.lang.ClassFormatError: Duplicate method name&signature in class file [Class Name]
有问题的类是从一个接口实现的,并且该程序还有几个其他类是从错误中提到的类扩展而来的。
是什么原因造成的,如何解决?
我遇到过同样的问题。至于我,根本原因是 aspectj 插件编译了两次源代码。Aspect 类留在“服务”模块中并使用 aspectJ 插件进行编译。然后它已经作为依赖项编译到顶级'web'模块中并再次符合(因为'service'模块在'web'模块的aspectJ插件配置中作为'weaveDependency')。解决方案:我已经替换了“web”模块中的下一个配置
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<weaveDependencies>
<weaveDependency>
<groupId>com.taxi.core</groupId>
<artifactId>service</artifactId>
</weaveDependency>
</weaveDependencies>
</configuration>
和
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.5</version>
<configuration>
<aspectLibraries>
<aspectLibrary>
<groupId>com.taxi.core</groupId>
<artifactId>service</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
当 Java 虚拟机尝试读取类文件并确定该文件格式错误或无法解释为类文件时抛出。
http://docs.oracle.com/javase/7/docs/api/java/lang/ClassFormatError.html
Javadocs 是您的朋友。
谷歌搜索并发现禁用“保存时部署”可能有助于解决问题。在测试平台上试用并投入生产!