我已经安装了 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)
看起来您已经使用较旧的 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 6 可能仍然是默认版本(与旧程序兼容?)。要强制使用 Java 7 运行时,请使用它的直接路径:
/usr/lib/jvm/java-7-openjdk-amd64/bin/java tes
Run Code Online (Sandbox Code Playgroud)
(替代amd64由i386为Java的32位版本)
如果要为 Java 版本 6 编译代码,请使用 Java 6 编译器的完整路径:
/usr/lib/jvm/java-6-openjdk/bin/javac tes.java
Run Code Online (Sandbox Code Playgroud)
就像我以前说过的,如果你不喜欢版本7或6,卸载它(openjdk-7-jdk并openjdk-7-jre为第7版,openjdk-6-jdk并openjdk-6-jre于第6版)。可以同时安装两个版本。使用替代系统来配置默认的。运行以下命令来配置运行时和编译器。它将为您提供默认选择。
sudo update-alternatives --config java
sudo update-alternatives --config javac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23573 次 |
| 最近记录: |