一、报错
编译安卓源码,想用android studio打开源码,编译过程中出现了如下报错.
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 53.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:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
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:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:621)
网上查找后都是说java环境不一致导致的,但大多数是windows系统的修改。
二、查看项目java环境
~$ which java
/xxxxxxxx(本地源码目录)/prebuilts/jdk/jdk11/linux-x86/bin/java
因为编译环境配置了,所以现在的java是项目中的jdk11版本
三、查看本地java环境
java -version
openjdk version "1.8.0_382"
OpenJDK Runtime Environment (build 1.8.0_382-8u382-ga-1~20.04.1-b05)
OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)
对比可以看到ubuntu的java配置是1.8版本
四、将本地java升级到11
笔者参考了此篇文章 Ubuntu 20.04安装JDK 11的过程_ubuntu ghidra安装-CSDN博客
sudo apt install openjdk-11-jdk
五、升级后检验java环境
/usr/bin$ java -version
openjdk version "11.0.20.1" 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
六、再次编译安卓项目
Traversed tree: 1028488ms
编译成功,没有出现报错,可以正常导入android studio中。