【问题标题】:java.lang.ClassFormatError: Duplicate method name&signature in class filejava.lang.ClassFormatError:类文件中的方法名称和签名重复
【发布时间】:2013-06-10 17:44:20
【问题描述】:

我们正在将我们的应用程序从Weblogic 10.3.0 升级到10.3.6。当我们尝试部署它时,我们得到了错误:

 java.lang.ClassFormatError: Duplicate method name&signature in class file...

经过进一步调查,我们发现问题是由如下代码引起的:

interface Foo{ 
    void foo();
}
interface Bar{ 
    void foo();
}
interface Baz extends Foo, Bar{}
BazEJB implements Baz....

这会导致 Baz 中生成 2 个 foo 方法....ELOImpl.class 当我们尝试部署 ear 文件时会导致此错误。

明显的解决方法是删除此模式,但还有其他建议吗?我们是这里的错误还是应该将其视为 weblogic 中的错误?

我们仍在使用EJB 2,这种模式在Weblogic 8.1 and 10.3.0 中有效

【问题讨论】:

  • 错了。接口extends 其他接口。类implements 接口。
  • 只有weblogic升级了吗?没有其他的?另外,为什么要从这种模式开始?这种模式试图解决什么问题?
  • 是的,weblogic 是唯一更新的东西。这种模式大多是偶然出现的。我刚刚清理了一个像这样的 bean,我所要做的就是从一个接口中删除方法,所以这可能是某人过于急切的情况。
  • 我以前肯定用过这种模式;通常编译器会确保你不会得到这些错误。听起来你的编译器可能有问题?

标签: java jakarta-ee ejb weblogic


【解决方案1】:

确保清理重新编译有错误的类。无论你可以设置什么标志:让它更干净、更强制,直到它起作用。

【讨论】:

    【解决方案2】:

    这是因为类再次被重新加载。 检查您是否添加了两次 java_home 或路径变量。 可能是 Eclipse 中的一个和默认(操作系统级别)的一个。 删除重复的路径变量。

    【讨论】:

    • 感谢您在 StackOverflow 上的第一个回答。但是,由于类加载两次,不会出现“类文件中的方法名称重复”错误。此外,两次提及 JAVA_HOME 不会使类再次加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多