在Ubuntu上解决java和javac之间的版本冲突
我在Ubuntu上编译的Java应用程序有问题。它抛出在Ubuntu上解决java和javac之间的版本冲突,ubuntu,java,javac,openjdk,unsupported-class-version,Ubuntu,Java,Javac,Openjdk,Unsupported Class Version,我在Ubuntu上编译的Java应用程序有问题。它抛出不受支持的ClassVersionError。 我使用的JDK版本高于在我的路径中配置的运行Java的版本: $ javac -version javac 1.7.0_147 $ java -version java version "1.6.0_23" OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2) OpenJDK Client VM
不受支持的ClassVersionError
。
我使用的JDK版本高于在我的路径中配置的运行Java的版本:
$ javac -version
javac 1.7.0_147
$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)
如何解决此问题?这是您想要的。我基本上有相同的配置,但我正在从Glassfish和Java7来回切换。看一看,然后尝试以类似的方式设置Java环境运行以下任一操作,以找到该环境的位置
javac 1.7.0_147
使用方法如下:
whereis javac
或
或
找到目录后,将bin内容以符号方式强制链接到/usr/bin:
sudo ln -f -s [put location here]/bin/* /usr/bin
在终端中键入以下命令:
sudo update-alternatives --config java
它将要求您:
备选java有两种选择(提供/usr/bin/java)
我输入2,因为我想使用java 1.7.0_21,您还需要执行以下操作:
sudo update-alternatives --config javac
从提供的列表中选择所需的java编译器。例如在Centos 5上
There are 2 programs which provide 'javac'.
Selection Command
-----------------------------------------------
1 /usr/lib/jvm/java-1.6.0-openjdk/bin/javac
*+ 2 /usr/lib/jvm/java-1.7.0-openjdk/bin/javac
我已经添加并安装了Java和Javac的替代方案,其中包括以下步骤: 步骤1:添加Java和Javac备选方案:
sudo update-alternatives --config javac
sudo update-alternatives --config javac
添加Javac的命令:
sudo update-alternatives --install "/usr/bin/java" "java" "/opt/amazon-jdk-11/bin/java" 1
即:“/opt/amazon-jdk-11/bin/javac”这是java的新路径
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/amazon-jdk-11/bin/javac" 1
i、 e:/opt/amazon-jdk-11/bin/javac是javac的新路径
步骤2:安装了Java和Javac替代方案:
sudo update-alternatives --config javac
sudo update-alternatives --config javac
输入上述命令后,您将能够看到如下屏幕,您可以选择要配置java的编号
我在列表中选择了“1”作为我想要安装的javac“/opt/amazon-jdk-11/bin/java”
使用以下命令验证您的Java替代安装是否成功:
哪个javac
和哪个java
您可以看到如下屏幕:
无论如何,你可能更愿意问这个问题,检查安装了哪些java软件包,如果也安装了jre v1.7,你可能需要配置使用“替代品”的版本。或者,尝试使用
-target 1.6
或-source 1.6
编译。我也有同样的问题,但当我尝试这个时,我得到了一个新的,不同错误:“符号链接级别太多”-1,请不要尝试此答案。我认为它不应该被选为公认的答案。这很可能会在/usr/bin目录中创建无法删除的循环符号链接,从而导致机器不可逆转地混乱@保罗:这个答案是针对一个javac
不在/usr/bin
的人的。如果[put location here]/bin
被证明是/usr/bin
,那么这个命令就会变得非常可笑,你应该知道——如果你试图理解这个解决方案而不是盲目地应用它,我想这是真的。我不是有意冒犯,我认为答案仍然有用。但也许我在公众面前的愚蠢会阻止其他人犯同样的错误。这个选项在Ubuntu 18.04上对我有效
sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/amazon-jdk-11/bin/javac" 1
sudo update-alternatives --config javac
sudo update-alternatives --config javac