解决Ubuntu上java和javac之间的版本冲突

xra*_*alf 18 java ubuntu openjdk javac unsupported-class-version

我在Ubuntu上编译的Java应用程序有问题.它抛出UnsupportedClassVersionError.我正在使用比我在PATH中配置的JDK版本更高的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)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Ruj*_*uju 25

在终端中输入以下命令:

  sudo update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

它会要求你:

替代java有两种选择(提供/ usr/bin/java).

  Selection      Path                                            Priority   Status

    0           /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      auto mode

    1           /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode

    2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java  1051      manual mode


  Press enter to keep the current choice[*], or type selection number:
Run Code Online (Sandbox Code Playgroud)

我输入2,因为我想使用java 1.7.0_21


小智 18

你还需要做:

sudo update-alternatives --config javac
Run Code Online (Sandbox Code Playgroud)

从提供的列表中选择所需的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
Run Code Online (Sandbox Code Playgroud)


the*_*der 8

运行以下任一操作以查找位置的位置

javac 1.7.0_147
Run Code Online (Sandbox Code Playgroud)

使用如下:

whereis javac
Run Code Online (Sandbox Code Playgroud)

要么

 locate javac
Run Code Online (Sandbox Code Playgroud)

要么

find javac
Run Code Online (Sandbox Code Playgroud)

然后,一旦找到目录,就象征性地强制将bin内容链接到/ usr/bin:

sudo ln -f -s [put location here]/bin/* /usr/bin
Run Code Online (Sandbox Code Playgroud)

  • -1,请不要尝试这个答案。我认为应该取消选择它作为已接受的答案。这很可能会在您的 /usr/bin 目录中创建无法删除的循环符号链接,从而导致您的机器不可逆转地混乱! (2认同)