Java-什么导致ClassFormatError?

Java-什么导致ClassFormatError?,java,class,format,Java,Class,Format,从Eclipse运行程序时,它工作正常 在Eclipse之外运行它时,我会得到以下结果: java.lang.ClassFormatError: Duplicate method name&signature in class file [Class Name] 所讨论的类从一个接口实现,程序还有几个其他类,它们是从错误中提到的类扩展而来的 这是什么原因造成的?如何修复 当Java虚拟机尝试读取类文件并确定该文件格式不正确或无法解释为类文件时引发 Javadocs是您的朋友。谷歌搜

从Eclipse运行程序时,它工作正常

在Eclipse之外运行它时,我会得到以下结果:

 java.lang.ClassFormatError: Duplicate method name&signature in class file [Class Name]
所讨论的类从一个接口实现,程序还有几个其他类,它们是从错误中提到的类扩展而来的

这是什么原因造成的?如何修复

当Java虚拟机尝试读取类文件并确定该文件格式不正确或无法解释为类文件时引发


Javadocs是您的朋友。

谷歌搜索发现,禁用“保存时部署”可能有助于解决此问题。在测试平台上试用并投入生产

我也有同样的问题。至于我,根本原因是aspectj插件编译源代码两次。 方面类离开“服务”模块,并使用aspectJ插件编译。然后,它已经作为依赖项编译到顶级“web”模块中,并再次符合要求(因为“服务”模块在“web”模块的aspectJ插件配置中作为“Weavedependence”)。 解决方案: 我已替换“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>

org.codehaus.mojo
aspectj maven插件
1.5
com.taxi.core
服务


org.codehaus.mojo
aspectj maven插件
1.5
com.taxi.core
服务

我猜你的类中有两个名称和签名相同的方法。你能发布类代码吗?这可能会有帮助。@appclay不应该被Eclipse检测到吗?这个类有点大…894行。我应该把它贴在这里吗?而且它没有重复的方法,Eclipse确实检测到了这一点,如果检测到,它将不会编译。您可以检查从Eclipse外部运行的代码是否与您认为应该的代码完全相同。这可能是一个简单的复制/粘贴错误或类似的错误。。如果是我,我会在Eclipse之外获取导致问题的类文件,使用cavaj或其他工具对其进行反编译,并检查是否有重复的方法。WTH?到底是什么让它认为它不是一个类文件呢?它可能像文件编码一样愚蠢。您说过“在Eclipse之外运行它时”。您是否从另一个切换了文件编码的文本编辑器中重新保存了文件?它可能需要UTF8。我没有…似乎添加了一个重复的方法。这两个副本来自其实现的接口。但是方法完全不同?不管怎样,它们不是重复的。有“a”和“a”,我没有注意到下划线。@WildBamaBoy-假设这些不是生成的方法。。。你真的,真的应该坚持Java惯例。方法名称中任何地方的下划线字符都违反Sun/Oracle约定,后面的下划线只是自找麻烦。也许你应该让你的同事检查你的代码。
<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>