Java String.isBlank()在Eclipse/Shell正常但JAR包中异常问题
问题分析与解决方案
核心原因
你遇到的问题本质是Java版本兼容性问题:String.isBlank()是Java 11才引入的方法。你的开发环境(Eclipse、Powershell)使用的JDK版本≥11,代码能正常执行;但导出JAR后运行的JRE版本低于11,调用isBlank()时会抛出NoSuchMethodError。由于这个异常未被捕获或打印日志,导致方法执行中断,看起来像是“卡在判断环节”,既不进入if也不执行else分支。
验证方式
在sendWarningSMS方法开头添加全局异常捕获,或者查看JVM错误日志,会发现明确的NoSuchMethodError提示,指向String.isBlank()方法。
解决方案
有两种可行处理方式:
- 统一Java版本:确保JAR运行环境的JRE版本≥11,和开发环境的JDK版本保持一致。
- 兼容低版本写法:把
!mobileNumberFromConfigFile.isBlank()替换为Java 8及以上都支持的等效代码:
这样无论运行环境是Java 8还是更高版本,都能正常执行空字符串判断。!mobileNumberFromConfigFile.trim().isEmpty()
额外建议
打包JAR时,确认编译用的JDK版本和目标运行环境的JRE版本匹配,避免类似API兼容性问题。可以在IDE编译设置里指定目标Java版本,或用Maven/Gradle的sourceCompatibility和targetCompatibility参数统一版本。
内容的提问来源于stack exchange,提问作者Sandro
相关产品推荐
相关产品推荐

