mac出现java程序运行版本不一致解决方案

发布于:2025-03-19 ⋅ 阅读:(12) ⋅ 点赞:(0)
mac出现java程序运行版本不一致

当进行apk反编译时,调用jadx-gui时
运行java程序jar包的时候报错:

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: jadx/gui/JadxGUI has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

原因是编译这个jar包jadx-1.5.1-all.jar用的java运行时环境是55.0,而我现在电脑上的java运行时环境是52.0,大致的对应关系如下:

49 = Java 5
50 = Java 6
51 = Java 7
52 = Java 8
53 = Java 9
54 = Java 10
55 = Java 11
56 = Java 12
57 = Java 13
58 = Java 14
59 = Java 15
60 = Java 16
61 = Java 17

所以也就是编译jadx-1.5.1-all.jar用的JRE是java11,而我现在电脑上的java运行时环境是java8,用命令查看一下

java -version 查看当前Java的jdk版本
javac -version 查看当前Java的jre版本

果然是1.8

官方下载地址

Java Downloads | Oracle
我这里下载的是JDK22版本
mac下的JDK都默认安装在这个目录下:/Library/Java/JavaVirtualMachines/
然后电脑上就有不同版本的JDK了
接下来我们只需要在配置文件中设置选择使用不同版本的JDK就好了
如果当前使用的shell是zsh就编辑.zshrc文件,如果是bash就编辑.bash_profile文件

vim .bash_profile
JAVA_HOME_8=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
JAVA_HOME_22=/Library/Java/JavaVirtualMachines/jdk-22.jdk/Contents/Home
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export JAVA_HOME=$JAVA_HOME_8
export JRE_HOME
export PATH
export CLASSPATH

alias jdk8="export JAVA_HOME=$JAVA_HOME_8"
alias jdk22="export JAVA_HOME=$JAVA_HOME_22"

然后保存文件让它生效:

source .bash_profile

查看当前java版本