IntelliJ运行TestNG.xml报java: package java.time does not exist问题求助
出现java: package java.time does not exist错误,核心是编译或运行环境的JDK版本配置不匹配导致的,以下是具体原因和对应解决方案:
Maven编译插件配置覆盖IDE设置
Maven编译配置优先级高于IDE模块语言级别设置,如果pom.xml中maven-compiler-plugin的source和target版本未正确设置为11(或低于8),编译时会采用低版本JDK规范,无法识别java.time包(该包从Java8开始引入)。
解决:在pom.xml中添加或修改编译插件配置:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build>配置完成后,执行
mvn clean compile命令,或点击IDEA右侧Maven面板的「Reload All Maven Projects」刷新配置。项目全局SDK配置错误
仅修改模块语言级别,未将项目全局SDK设置为JDK11,会导致编译时默认使用其他版本JDK。
解决:打开File -> Project Structure -> Project,确保「Project SDK」选择JDK11,「Project language level」设置为11。TestNG运行配置的JRE版本不匹配
即使编译环境配置正确,TestNG运行时使用的JRE版本低于11,也会触发该错误。
解决:打开「Run/Debug Configurations」,找到对应的TestNG配置,在「JRE」下拉菜单中选择JDK11。IDE缓存或索引异常
IDEA的缓存或索引损坏可能导致代码识别错误,即使配置正确也会报错。
解决:打开File -> Invalidate Caches...,勾选「Invalidate and Restart」重启IDEA,清除缓存后重新加载项目。
内容的提问来源于stack exchange,提问作者Amir Ali Ansari

