只是尝试在JRE 10中运行我的应用程序(因为9最近被杀死)。以下错误表明它需要ant.jar,但这是一个完全废话。该应用程序不需要运行,它在所有JRE一直返回到7的情况下都可以正常运行。为什么运行时要求完全不相关的内容?
java.lang.NoClassDefFoundError: org/apache/tools/ant/taskdefs/Execute
at org.apache.commons.configuration.EnvironmentConfiguration.extractProperties14(EnvironmentConfiguration.java:160)
at org.apache.commons.configuration.EnvironmentConfiguration.<init>(EnvironmentConfiguration.java:77)
at org.apache.commons.configuration.interpol.EnvironmentLookup.<init>(EnvironmentLookup.java:51)
at org.apache.commons.configuration.interpol.ConfigurationInterpolator.<clinit>(ConfigurationInterpolator.java:386)
.......
Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.taskdefs.Execute
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
答案 0 :(得分:3)
似乎您对apache commons-configuration的较旧版本有所依赖。我在1.10版和2.2版中都找不到该行。
如果您要详细说明适当版本的源代码,我想您会看到类似super(new HashMap<String, Object>(System.getenv()));
和extractProperties14(..)
(在上述版本中我找不到)的某些代码,由于某种逻辑,访问org.apache.tools.ant.taskdefs.Execute
。
因此,我建议更新依赖项的版本,或者,如果不允许这样做,请删除导致错误并似乎默认由JRE提供的SystemProperty。
答案 1 :(得分:0)
我似乎已经找到了答案,但目前可能会提出更多问题。好吧,至少该应用程序似乎可以像以前一样运行。令人讨厌的依赖项是 commons-configuration-1.7.jar 。升级到 commons-configuration-1.10.jar 后,一切恢复正常。或似乎。坦白地说,最近我不知道如何控制升级的步伐...