java.lang.NoSuchMethodError:

时间:2013-04-04 17:39:00

标签: java

我正在尝试运行一个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;
    }

1 个答案:

答案 0 :(得分:0)

虽然这篇文章已经很老了,但我正在回答这个问题,因为有人可能会遇到与上述相同的问题,并且与我正在努力解决的问题相匹配。

我面临着一个类似的问题,经过仔细检查,发现在两个相同的包名中有两个相同的类,尽管在不同的模块下。例如,假设您有两个项目,JAVA客户端和Web客户端部署到包含在同一EAR文件中的服务器。

  

JavaClient>> test.java.somepackage.SomeClass

     

WebClient>> test.java.somepackage.SomeClass

     

都打包在 TestProjectEAR.ear

在这种情况下,如果您在服务器上部署了项目,服务器可能会尝试在错误的类中查找具有相同名称的方法,从而导致java.lang.NoSuchMethodError。

我希望这可以帮助一些可能来这里寻找答案的人。 :)