![](/img/trans.png)
[英]"java.lang.NoSuchMethodError:" - Guava dependency problem?
[英]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.