首页 > 解决方案 > 运行 .jar 文件时 regex.Matcher.results() 的 Java NoSuchMethodError

问题描述

当我将我的应用程序作为 .jar 文件运行时,它返回以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrc
der.java:61)
Caused by: java.lang.NoSuchMethodError: java.util.regex.Matcher.results()Ljav
til/stream/Stream;
        at SalesToExcel.start(SalesToExcel.java:108)
        at SalesToExcel.main(SalesToExcel.java:45)
        ... 5 more

但是,当我在 Eclipse IDE 中运行它时,它可以工作。有任何想法吗?我不确定我是否以某种方式丢失了正确的 jar 文件,即使 java.utils.regex 应该包含在 rt.jar 中。有没有办法在我打包 jar 时检查它是否以某种方式丢失?

以下是 .jar 的导出设置

标签: javajarnosuchmethoderror

解决方案


所以,这是你的问题。java.util.regex.Matcher.results自 Java 9 起就在 Java 中,您正在使用 Java 8 运行 .jar。

Eclipse 使用 Java11 运行。

在您的操作系统(Windows?)中至少安装 Java9 作为默认 JRE。


推荐阅读