我正在尝试运行一个java应用程序,我收到以下错误:
java.lang.NoSuchMethodError: com/crossview/commerce/dataload/reader/OfferReader.getNode()Lorg/w3c/dom/Node;
at com.wkus.taa.commerce.dataload.reader.OfferReader.init(OfferReader.java:57)
at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.initializeDataReaders(AbstractBusinessObjectLoader.java:1220)
at com.ibm.commerce.foundation.dataload.AbstractBusinessObjectLoader.init(AbstractBusinessObjectLoader.java:353)
at com.ibm.commerce.foundation.dataload.BusinessObjectLoader.init(BusinessObjectLoader.java:65)
at com.ibm.commerce.foundation.dataload.DataLoaderMain.execute(DataLoaderMain.java:428)
at com.ibm.commerce.foundation.dataload.DataLoaderMain.main(DataLoaderMain.java:213)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:600)
at com.ibm.ws.bootstrap.WSLauncher.main(WSLauncher.java:260)
但是代码中存在方法getNode()
。
为什么我看到这个错误的任何线索?
我有一个子类OfferReader.java,它从超类调用getNode()。
public void init() throws DataLoadException {
super.init();
node = super.getNode();
}
父类OfferReaderParent.java具有以下方法签名:
public Node getNode() {
return node;
}
public void setNode(Node node) {
this.node = node;
}
答案 0 :(得分:0)
虽然这篇文章已经很老了,但我正在回答这个问题,因为有人可能会遇到与上述相同的问题,并且与我正在努力解决的问题相匹配。
我面临着一个类似的问题,经过仔细检查,发现在两个相同的包名中有两个相同的类,尽管在不同的模块下。例如,假设您有两个项目,JAVA客户端和Web客户端部署到包含在同一EAR文件中的服务器。
JavaClient>> test.java.somepackage.SomeClass 强>
WebClient>> test.java.somepackage.SomeClass 强>
都打包在 TestProjectEAR.ear
中
在这种情况下,如果您在服务器上部署了项目,服务器可能会尝试在错误的类中查找具有相同名称的方法,从而导致java.lang.NoSuchMethodError。
我希望这可以帮助一些可能来这里寻找答案的人。 :)