IntelliJ调试无法识别nullInputStream(),Maven运行正常的问题排查
问题描述
我的单元测试代码片段如下:
if (retries >= maxRetries) { return InputStream.nullInputStream(); }
使用mvn test命令可以正常运行测试,但在IntelliJ中执行调试(Run->Debug)时,会出现错误提示:cannot find symbol - method nullInputStream()。
nullInputStream()方法是Java 11引入的,我的IntelliJ已全局设置为Java 17(截图如下),且Maven也配置了Java 17版本,执行mvn -v的输出信息如下:
...@...-mac .... % mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /usr/local/apache-maven Java version: 17.0.7, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "13.2.1", arch: "aarch64", family: "mac"

请问是什么原因导致该问题?
可能的原因及解决方法
- 模块语言级别未匹配:虽然全局设置了Java 17,但单个模块的语言级别可能仍低于Java 11。进入
File -> Project Structure -> Modules,检查对应模块的Language level是否设置为17 - Sealed classes, pattern matching或至少11 - Local variable syntax for lambda parameters。 - 调试运行配置JDK错误:调试用的运行配置可能指定了错误的JDK。打开
Run -> Edit Configurations,找到对应的测试运行配置,在JRE选项中选择Java 17版本的JDK。 - Maven配置未同步:IntelliJ可能未正确同步Maven的JDK配置。点击右侧Maven面板的
Reload All Maven Projects按钮,或执行File -> Sync Project with Maven Files重新同步。 - IntelliJ缓存异常:IDE缓存可能导致方法识别错误。执行
File -> Invalidate Caches...,选择Invalidate and Restart,重启IDE后再尝试调试。
内容的提问来源于stack exchange,提问作者committedandroider
相关产品推荐
相关产品推荐

