发行版系统:Deepin15.9 (为什么?漂亮不折腾)
一直知道这个情况,但使用正常就没去理他,直到今天:
VSCode给我报了个错误
1 cd "/home/××/Documents/0vscode/java/" && javac -encoding UTF-8 MidiDance1.java && java MidiDance1 2 3 Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp 4 Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp 5 Error: LinkageError occurred while loading main class MidiDance1 6 java.lang.UnsupportedClassVersionError: MidiDance1 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 54.0
所以解决它...
百分百确定是Openjdk自带的jre和Oracle的冲突,看这里:
$ sudo update-alternatives --config java
[sudo] ×× 的密码:
链接组 java (提供 /usr/bin/java)中只有一个候选项:/usr/lib/jvm/java-10-openjdk-amd64/bin/java
无需配置。
$ ls /usr/lib/jvm/ default-java java-10-openjdk-amd64 java-1.10.0-openjdk-amd64 jdk-11.0.2
其中jdk-11.0.2 是我自己装的OracleJdk目录
可知系统是默认配置一个openjdk的jre环境了
// 问题应该在这个目录,进去看看
$ cd /usr/lib/jvm/
// default这个目录有点默认使用的意味,ls详细看看
$ ls -l default-java/bin/ 总用量 216 -rwxr-xr-x 1 root root 10520 5月 6 2018 java -rwxr-xr-x 1 root root 10600 5月 6 2018 jjs -rwxr-xr-x 1 root root 10560 5月 6 2018 keytool -rwxr-xr-x 1 root root 10608 5月 6 2018 orbd -rwxr-xr-x 1 root root 10560 5月 6 2018 pack200 -rwxr-xr-x 1 root root 10552 5月 6 2018 rmid -rwxr-xr-x 1 root root 10560 5月 6 2018 rmiregistry -rwxr-xr-x 1 root root 10560 5月 6 2018 servertool -rwxr-xr-x 1 root root 10616 5月 6 2018 tnameserv -rwxr-xr-x 1 root root 107920 5月 6 2018 unpack200
文件权限之后的数字代表类型,1是link文件链接类型,
也就是说系统默认使用了这个链接,所以也就印证了VSCode里调用的报错。
那更改java链接就行了?等等,看清楚点比较好
$ ls -l default-java lrwxrwxrwx 1 root root 25 5月 1 2018 default-java -> java-1.10.0-openjdk-amd64
原来这个default-java才是一个链接
$ ls -l java-1.10.0-openjdk-amd64 lrwxrwxrwx 1 root root 21 5月 6 2018 java-1.10.0-openjdk-amd64 -> java-10-openjdk-amd64
等等....这....看来得把所有主要目录都列出来
$ ls -l 总用量 8 lrwxrwxrwx 1 root root 25 5月 1 2018 default-java -> java-1.10.0-openjdk-amd64 drwxr-xr-x 7 root root 4096 1月 24 15:41 java-10-openjdk-amd64 lrwxrwxrwx 1 root root 21 5月 6 2018 java-1.10.0-openjdk-amd64 -> java-10-openjdk-amd64 drwxr-xr-x 8 668 668 4096 1月 22 10:47 jdk-11.0.2
所以看懂了,为什么这么蛋疼的链接呢?那肯定是为了兼容性,查了一下: jdk10 也叫 jdk1.10 (目前 jdkxx 都叫 jdk1.xx)
Ps. 闲的没事多 ls -l 会有很多发现
原因找到了,那我们就依样画葫芦解决它吧。
解决方案: