这是场景(伪代码):
class X
class Y extends X
class A
public void methodA(X x){}
class B extends A
class Main
main() {
new B().methodA(new Y());
}
从Eclipse中运行时一切都很好。使用maven构建时,我将在运行时获得NoSuchMethodError。 我看了一下字节码。
Eclipse编译器生成的字节码如下所示:
invokevirtual B.methodA(X)
maven编译器生成的字节码如下所示:
invokevirtual B.methodA(Y)
这导致NoSuchMethodError
说B
没有方法" methodA
"采用参数类型Y
(方法签名因参数类型而异)。
你有什么想法可能有什么不对吗?我已检查两个环境对源/目标使用相同的值,设置为1.6
还有其他要检查的内容吗?
谢谢!