目前我的Ubuntu系统的环境变量都配置在/etc/profile
,如果是其它配置目录也是完全可以的
PS:配置在/etc/profile
目录主要是防止在自己系统上切换不同的用户,又需要重新下载软件或者配置环境变量
和Java相关的配置如下所示
注意:可能需要重启机器让配置文件生效,或者暂时使用source
命令,/etc/profile
配置文件是启动机器时候生效,如果切换终端或者没有执行source
命令,将不会生效
/etc/profile配置文件内容
/etc/profile
配置文件内容如下
export JAVA_HOME=/usr/local/java/current
export PATH=$JAVA_HOME/bin:$PATH
ln命令建立软链接
首先进入/usr/local/java
目录,执行以下命令
sudo ln -s jdk-17.0.5 /usr/local/java/current
/usr/local/java
目录中最开始只有以下内容
drwxr-xr-x 9 root root 4096 11月 11 16:05 jdk-17.0.5/
drwxr-xr-x 7 root root 4096 11月 11 16:27 jdk1.8.0_201/
执行完ln
命令以后/usr/local/java
目录中增加一条软链接
lrwxrwxrwx 1 root root 10 11月 11 16:29 current -> jdk-17.0.5/
drwxr-xr-x 9 root root 4096 11月 11 16:05 jdk-17.0.5/
drwxr-xr-x 7 root root 4096 11月 11 16:27 jdk1.8.0_201/
快速切换jdk版本
只需要修改软链接即可
进入到/usr/local/java
目录,执行以下命令
sudo ln -snf jdk-17.0.5 /usr/local/java/current
or
sudo ln -snf jdk1.8.0_201 /usr/local/java/current
或者执行在任意目录执行以下命令
sudo ln -snf /usr/local/java/jdk1.8.0_201 /usr/local/java/current
or
sudo ln -snf /usr/local/java/jdk-17.0.5 /usr/local/java/current
为什么要这么做
在很多开源项目中,如果在终端去进行编译,还是比较依赖于系统里面是不是配置了JAVA_HOME
,建立软链接这种方式就在不破坏JAVA_HOME
的前提下,实现了快速切换JDK版本
解决这个问题的来源
我在尝试构建Quarkus应用时,系统一直报出以下错误
命令:quarkus create && cd code-with-quarkus
错误如下所示
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: io/quarkus/cli/Main 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
关键信息是:class file version 55.0
这个错误是:我们的类是在比我们试图运行它的版本更高的Java版本上编译的。更具体地说,在这种情况下,使用Java 11编译了我们的类,并尝试使用 Java 8 运行它
参考内容:https://www.baeldung.com/java-lang-unsupportedclassversion
主要版本的映射如下所示
45 = Java 1.1
46 = Java 1.2
47 = Java 1.3
48 = Java 1.4
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
转载请注明:IT运维空间 » linux » Ubuntu怎么快速切换JDK版本
发表评论