无法执行 Java 程序:UnsupportedClassVersionError

Ric*_*ian 4 java

我已经安装了 JDK 6,但我无法执行 Java 程序。

例如,我制作了 test.java。我编译它,编译时javac tes.java没有错误,但是当我想执行该程序时,它总是显示错误。我用java tes.

Exception in thread "main" java.lang.UnsupportedClassVersionError: tes : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: tes. Program will exit.
Run Code Online (Sandbox Code Playgroud)

我的 javac 版本是 1.7.0,我的 java 版本是 1.6.0。

这是我的tes.java代码:

class tes{

    public static void main(String[]args){
        System.out.println("hello");    
    }   

}
Run Code Online (Sandbox Code Playgroud)

Lek*_*eyn 5

看起来您已经使用较旧的 Java 运行时 (6) 无法执行的较新版本的 Java (7) 编译了 Java 源代码。如果您不需要/不想要 Java 7,请卸载该openjdk-7-jdk软件包并安装openjdk-6-jdk

sudo apt-get remove openjdk-7-jdk
sudo apt-get install openjdk-6-jdk
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用特定版本的编译器或运行时的直接路径:

运行 Java 7 运行时

Java 6 可能仍然是默认版本(与旧程序兼容?)。要强制使用 Java 7 运行时,请使用它的直接路径:

/usr/lib/jvm/java-7-openjdk-amd64/bin/java tes
Run Code Online (Sandbox Code Playgroud)

(替代amd64i386为Java的32位版本)

运行 Java 编译器版本 6

如果要为 Java 版本 6 编译代码,请使用 Java 6 编译器的完整路径:

/usr/lib/jvm/java-6-openjdk/bin/javac tes.java
Run Code Online (Sandbox Code Playgroud)

备择方案

就像我以前说过的,如果你不喜欢版本7或6,卸载它(openjdk-7-jdkopenjdk-7-jre为第7版,openjdk-6-jdkopenjdk-6-jre于第6版)。可以同时安装两个版本。使用替代系统来配置默认的。运行以下命令来配置运行时和编译器。它将为您提供默认选择。

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