Java运行HelloWorld报JNI错误及版本兼容异常求助
解决Java UnsupportedClassVersionError问题
你遇到的UnsupportedClassVersionError本质是编译版本和运行版本不匹配:
- 你用JDK 17(javac 17.0.4)编译代码,生成的类文件版本为61.0(对应JDK17)
- 但运行时使用的是JRE 1.8(Java 8),它仅支持最高类文件版本52.0(对应JDK8),无法识别高版本编译的类文件。
方法一:用匹配JDK版本编译
如果需要在Java8环境运行,直接用JDK8的javac编译代码:
- 找到你Java8安装目录下的
javac程序(Windows为bin/javac.exe,Linux/Mac为bin/javac) - 执行编译命令:
# Windows示例 C:\Program Files\Java\jdk1.8.0_351\bin\javac HelloWorld.java # Linux/Mac示例 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac HelloWorld.java
- 再用
java命令运行:
java HelloWorld
方法二:指定编译目标版本(跨版本编译)
如果只能用JDK17编译,但要兼容Java8运行,编译时添加版本参数:
# JDK9+可用简洁的--release参数 javac --release 8 HelloWorld.java # 或者用传统参数(需指定Java8的引导类路径) javac -source 8 -target 8 -bootclasspath /path/to/java8/jre/lib/rt.jar HelloWorld.java
注:
-bootclasspath需替换为你Java8安装目录下rt.jar的实际路径,比如Windows下为C:\Program Files\Java\jdk1.8.0_351\jre\lib\rt.jar。
方法三:统一运行和编译的Java版本
直接将运行环境升级到JDK17,确保java和javac都指向同一版本,编译运行即可正常执行。
内容的提问来源于stack exchange,提问作者fishtacosandwich
相关产品推荐
相关产品推荐

