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

我在Ubuntu上编译的Java应用程序有问题。它抛出.我正在使用比我的PATH中配置为运行Java的JDK版本更高的JDK版本进行编译:UnsupportedClassVersionError

$ 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)

如何解决此问题?


答案 1

在终端中键入以下命令:

  sudo update-alternatives --config java

它将要求您提供:

替代java有2种选择(提供/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:

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


答案 2

您还需要执行以下操作:

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