繁体   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