1、问题:
(Ubuntu16,jdk1.8,IDEA2021.3)
zx@zx-virtual-machine:~/IDEA/bin$ ./idea.sh
Error occurred during initialization of VM
java.lang.UnsupportedClassVersionError: com/intellij/util/lang/PathClassLoader 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:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.lang.SystemClassLoaderAction.run(ClassLoader.java:2205)
at java.lang.SystemClassLoaderAction.run(ClassLoader.java:2191)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.initSystemClassLoader(ClassLoader.java:1453)
at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:1433)
2.说明:
我们要装得IDEA中的PathClassLoader文件集成中,包含了较新版本的JRE,而我们环境中的已经配置好的jre版本太低。不能匹配兼容。
3.尝试:
本人使用了jenv版本控制工具,并且已经安装配置好了多个版本的jdk(jdk-8,jdk-11,jdk-12等),使用jenv来切换使用不同的jdk。
经过尝试,jdk-8使用时,无法启动IDEA,报出错,代码如上。
但是切换到jdk-11、jdk-12,都能顺利启动IDEA,也进一步验证了版本兼容的问题。
4.解决方法:
切换使用jdk版本请慎重,有时候由于版本的问题,可能会出现未知的错误,而且由于java8和java8之后的版本出现了比较大的调整,有很多时候新版本,无法向下兼容老版本。