Eclipse Photon 2018中Maven项目TestNG运行JNI错误及版本兼容问题
解决Eclipse Photon中Maven项目TestNG执行UnsupportedClassVersionError问题
问题本质
控制台抛出的 UnsupportedClassVersionError: org/testng/TestNGException 是因为POI 5.0.0强制要求JDK11+(类文件版本55.0对应JDK11),但你的项目仍绑定JRE8(仅支持到版本52.0)。核心障碍是Eclipse未识别已安装的JDK11,导致无法切换项目的JRE系统库。
步骤1:让Eclipse识别JDK11
你已安装JDK11.0.10但Eclipse未加载,手动添加:
- 打开Eclipse,依次选
Window > Preferences > Java > Installed JREs - 点击
Add,选Standard VM后点Next - 在
JRE home中选择JDK11的安装目录(例:C:\Program Files\Java\jdk-11.0.10),Eclipse会自动填充名称 - 勾选新添加的JDK11,点击
Apply and Close
步骤2:切换项目的JRE系统库
现在可以替换原有的JRE8:
- 右键项目 >
Build Path > Configure Build Path - 在
Libraries标签下,选中JRE System Library [JavaSE-1.8],点击Remove - 点击
Add Library > JRE System Library > Next - 选择
Workspace default JRE (jdk-11.0.10)或手动选中刚添加的JDK11,点Finish - 确认后点击
Apply and Close
步骤3:修正Maven编译配置(必做,防止自动回退)
Maven会强制遵循pom.xml的编译规则,必须指定JDK11参数,否则Eclipse的Maven插件会自动重置JRE:
在pom.xml的<build>节点下添加以下插件配置:
<build> <plugins> <!-- 指定JDK11编译版本 --> <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> <!-- 解决JDK9+缺失JAXB模块的问题(Selenium 3.x依赖) --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.0.0-M5</version> <configuration> <argLine>--add-modules java.xml.bind</argLine> </configuration> </plugin> </plugins> </build>
步骤4:更新Maven项目并验证
- 右键项目 >
Maven > Update Project,勾选Force Update of Snapshots/Releases,点击OK - 重新运行TestNG测试类,版本不兼容错误即可消除
额外优化建议
- Eclipse Photon支持JDK11,但建议将TestNG从6.14.3升级到7.6.1+,提升兼容性:
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>7.6.1</version> <scope>test</scope> </dependency>
- 若TestNG插件版本过旧,可通过
Help > Eclipse Marketplace搜索更新TestNG插件
内容的提问来源于stack exchange,提问作者Sanjay
相关产品推荐
相关产品推荐

