簡體   English   中英

缺少依賴? java.lang.NoSuchMethodError

[英]Dependency missing? java.lang.NoSuchMethodError

我在編程方面有些經驗,但對 Maven 還是很陌生。 在我的最新項目中,我使用的是 Apache Commons API(配置、cli 等)。 它編譯但在運行時拋出一個 NoSuchMethod 異常。

我的依賴項如下所示:

    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.3</version>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>2.0</version>
    </dependency>

    <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.4</version>
    </dependency>

這是發生錯誤的方法:

private Configuration parseConfig(String path) {
        File configFile = new File(path);
        if(!configFile.exists() || configFile.isDirectory()) {
            // Error config file path invalid
            CustomLogger.warn("ERROR file not found");
        }
        Configurations configs = new Configurations();
        Configuration config = null;
        try {
            config = configs.properties(configFile);
        }
        catch (ConfigurationException cex) {
            // Something went wrong
            CustomLogger.warn("Config Exception");
            cex.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return config;
    }

確切發生錯誤的行/部分/塊是:

try {
    config = configs.properties(configFile);
}

堆棧跟蹤是:

java.lang.NoSuchMethodError: org.apache.commons.beanutils.PropertyUtilsBean.addBeanIntrospector(Lorg/apache/commons/beanutils/BeanIntrospector;)V
        at org.apache.commons.configuration2.beanutils.BeanHelper.initBeanUtilsBean(BeanHelper.java:631)
        at org.apache.commons.configuration2.beanutils.BeanHelper.<clinit>(BeanHelper.java:89)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at com.sun.proxy.$Proxy0.<clinit>(Unknown Source)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.reflect.Proxy.newProxyInstance(Unknown Source)
        at org.apache.commons.configuration2.builder.fluent.Parameters.createParametersProxy(Parameters.java:294)
        at org.apache.commons.configuration2.builder.fluent.Parameters.fileBased(Parameters.java:185)
        at org.apache.commons.configuration2.builder.fluent.Configurations.fileParams(Configurations.java:602)
        at org.apache.commons.configuration2.builder.fluent.Configurations.fileParams(Configurations.java:614)
        at org.apache.commons.configuration2.builder.fluent.Configurations.fileBasedBuilder(Configurations.java:132)
        at org.apache.commons.configuration2.builder.fluent.Configurations.propertiesBuilder(Configurations.java:238)
        at org.apache.commons.configuration2.builder.fluent.Configurations.properties(Configurations.java:282)
        at com.core.utils.CustomConfiguration.parseConfig(CustomConfiguration.java:130)

我錯過了什么? Stack Overflow 上有幾篇文章建議在依賴項中包含“commons-beanutils”。 這樣做並沒有改變任何東西。 任何幫助表示贊賞。

這不是缺少的依賴關系。 在編譯時和運行時,依賴關系之間是不一致的。

問題是,在Apache Commons BeanUtils的1.8.3和1.9.0之間添加了org.apache.commons.beanutils.PropertyUtilsBean.addBeanIntrospector方法。

POM依賴關系表明您正在根據1.9.3編譯代碼,但是有證據表明您的JVM正在運行時加載較舊的版本。 檢查運行時類路徑/ WAR文件/任何內容,以確保只有一個BeanUtils JAR,並且它是正確的版本。

您的POM文件的依存關系之間可能會引起不明顯的沖突。 您可以通過使用Maven依賴插件來打印出依賴樹來診斷此問題:

我有這個問題3天。 我發現了非常奇怪的解決方案。 我的問題不是 go 通過更新項目或干凈構建任何東西。 對不起,但我必須解釋我的項目 SENARIO 才能明確解決方案。 我的項目建立在 maven,POM,selenium testng 上。 我做了三個 class。 Testbase“瀏覽器調用n控制”,主頁“obj repo n方法”和testsclass“測試場景n從Page類調用方法”。 一切正常,但現在當我再添加一個測試時,我創建了 loginpage“用於登錄網頁的 obj repo n 方法”class。 當我從 testclass 調用 LonginPage object 存儲庫時,它給出了“Nosuchmethodsexception”。 解決方案:- 刪除登錄頁面構造函數解決了問題。 現在我可以使用@Test 作為單獨的測試來調用該方法來給出優先級。

注意:我的主頁 class 中仍然有構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM