当我运行 java -version 和 javac -version 时,我得到了不同的 java 版本。对于 java-version,我得到了
java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.12.04.1)
OpenJDK Server VM (build 24.65-b04, mixed mode
javac -version
javac 1.6.0_33`
我在 ~/.profile 中的环境变量路径是:
export PATH=${PATH}:/usr/lib/jvm/java-7-openjdk-i386/
编辑
哪个java:/usr/bin/java
哪个 javac/usr/bin/javac
答案1
从您的编辑来看,您似乎openJDK
安装了两个实例。如果您希望它们匹配,您有两个选择:
卸载你不需要的那个。例如,如果你想要 open-jdk7 而不是 open-jdk6,请
sudo apt-get remove --purge openjdk-6-*
更新 java 使用的替代方案
sudo update-alternatives --config java
,然后选择您想要的方案。如果您需要同时使用两种 JDK,这是您的最佳选择,因为每次需要切换时,您都可以这样做
答案2
在 Fedora 上,我可以使用以下命令修复该错误:
sudo update-alternatives --config java
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
*+ 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-1.b14.el7_2.x86_64/jre/bin/java
2 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.101-2.6.6.1.el7_2.x86_64/jre/bin/java
3 /usr/java/jdk1.8.0_91/jre/bin/java
然后删除旧版本的 Java:
sudo yum remove java-1.7*
然后我为每个获得相同版本的Java:
答案3
如果Java 语言和javac显示不同的版本,那么您可以轻松地将它们设置为正确或相同的版本
步骤1
sudo update-alternatives --config java
输出 :
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1111 manual mode
* 2 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1081 manual mode
这将显示以下结果,start(*) 表示javac您的系统正在使用的版本。您可以通过选择所需的版本来更改它。
第2步
sudo update-alternatives --config java
输出 :
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
* 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
现在你可以再次选择要运行的版本Java 语言。
这样您就可以确保 java 和 javac 具有相同的版本。