0

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

1 回答 1

0

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

我遇到了一个类似的问题,仔细检查后发现在两个相同的包名称中有两个相同的类,尽管在不同的模块下。例如,假设您有两个项目,一个 JAVA 客户端和一个 Web 客户端,它们部署到您的服务器并打包在同一个 EAR 文件中。

JavaClient >> test.java.somepackage.SomeClass

WebClient >> test.java.somepackage.SomeClass

都打包在TestProjectEAR.ear中

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

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

于 2015-05-28T10:07:26.330 回答