无法使用 JRE 10 运行 简单的 Java 应用程序

Unable to run simple Java app with JRE 10

刚刚尝试 运行 我在 JRE 10 中的应用程序(因为 9 最近被杀)。下面的错误表明它需要 ant.jar 但这完全是胡说八道。应用程序 不需要 ant 到 运行,它与所有 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)

您似乎依赖于相当旧版本的 apache commons-configuration。我在 1.10 版和 2.2 版中都找不到提到的行。

如果您详细说明适当版本的来源,我想您会看到类似 super(new HashMap<String, Object>(System.getenv()));extractProperties14(..) 的内容(我在上述版本中找不到)一些由于某些逻辑访问 org.apache.tools.ant.taskdefs.Execute 的代码。

所以,我建议更新dependeny的版本,或者,如果你不允许这样做,删除导致错误的SystemProperty,似乎是JRE默认提供的。

我似乎找到了答案,但此时可能会提出更多问题。好吧,至少应用程序似乎像以前一样运行。有问题的依赖项是 commons-configuration-1.7.jar。升级到 commons-configuration-1.10.jar 后,一切又好了。或者看起来。坦率地说,我不知道如何控制最近 java 世界的升级趋势...