Java - 什么导致ClassFormatError?

时间:2012-04-05 02:05:15

标签: java class format

从Eclipse运行程序时,它运行正常。

在Eclipse之外运行时,我得到了这个:

 java.lang.ClassFormatError: Duplicate method name&signature in class file [Class Name]

有问题的类是从一个接口实现的,程序还有几个其他类,它们从错误中提到的类扩展而来。

是什么导致这种情况以及如何解决?

3 个答案:

答案 0 :(得分:2)

  

当Java虚拟机尝试读取类文件并确定文件格式错误或无法解释为类文件时抛出。

http://docs.oracle.com/javase/7/docs/api/java/lang/ClassFormatError.html

Javadocs是你的朋友。

答案 1 :(得分:2)

我有同样的问题。至于我,根本原因是aspectj插件编译源两次。 Aspect类离开'service'模块并使用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>

答案 2 :(得分:0)

用Google搜索并发现禁用“保存时部署”可能有助于克服此问题。试试测试平台并进行制作!