You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Jar包时出现java.util.regex.Matcher.results()相关NoSuchMethodError

问题根因

你遇到的NoSuchMethodError和依赖缺失无关,核心原因是JDK版本不兼容:

  • java.util.regex.Matcher.results() 是JDK 9才正式加入的API,JDK 8及更低版本完全没有该方法
  • 你的Eclipse IDE中项目配置的编译、运行环境为JDK 9+,因此代码可以正常运行;但导出Jar包后,运行Jar的环境使用的是JDK 8或更低版本,就会抛出方法找不到的错误

验证方法

1. 核对两端Java版本

  • 查看Eclipse项目的JDK配置:进入项目属性 > Java Build Path > Libraries确认JRE版本,再切换到Java Compiler页面查看编译兼容级别
  • 查看Jar运行环境的Java版本:在运行Jar的终端执行命令java -version,对比版本是否低于Eclipse使用的JDK版本

2. 校验Jar包的编译版本

可以通过JDK自带工具直接检查Jar内类文件的编译兼容级别,确认打包时是否被降级:

  • 执行命令:javap -verbose -classpath 你的Jar包完整路径 SalesToExcel | grep "major version"
  • 版本号对应关系:
    • 52 = JDK 8
    • 53 = JDK 9
    • 54 = JDK 10
    • 更高版本号依次对应更高JDK版本
      如果查询到的版本号≥53,说明编译使用的是JDK9+,只要运行环境版本匹配就不会出现该错误。

3. 检查打包配置

导出Jar时确认Eclipse导出向导中没有选择低版本JRE兼容选项,打包所用的JDK版本要和项目开发所用版本保持一致。

解决方案

  • 方案1:将运行Jar的环境升级到JDK 9或更高版本
  • 方案2:如果需要兼容JDK 8,修改代码将Matcher.results()的流式调用替换为JDK 8支持的遍历写法,用while循环调用matcher.find()处理匹配结果即可

内容的提问来源于stack exchange,提问作者Nick Green

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:09:01