我的 Java 程序编译成功。但当我尝试运行时,我得到了
Exception in thread "main" java.lang.UnsupportedClassVersionError: hello :
Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:643)
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:323)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
Could not find the main class: hello. Program will exit.
答案1
你似乎用了两个不同的 Java 版本为了编译和跑步该程序,如 1.8 和 1.6,其编译器更新得多。
可能是使用的 JDK 位于不同版本的 JRE 之后的路径中。请查看
echo $PATH
和
type javac
type java
javac -version
java -version
例如,如果您具有以下版本:
javac 1.7.0_55
和
java 1.6.0_31
,那么您可以将 JDK/JRE 1.7 放在 1.6 之前的 $PATH 中 - 以便使用 1.7 进行编译和运行;
或者获取 1.6 JDK 并将其放在您当前使用的 JDK 之前的 $PATH 中 - 以便使用 1.6 进行编译和运行。