【发布时间】:2014-09-07 07:45:15
【问题描述】:
玩一个小网络程序,用 netbeans 创建了一个 Jar。在我的计算机 java 1.7.0.60 上运行得很好,但是当我将它带到另一台具有较新版本的 java 1.7.0_65 的计算机上时,它不会运行,我收到此错误:
C:\Program Files (x86)\Java\jre7\bin>java -jar ReverseEchoServer.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: reverseechose
rver/SocketClient : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
我在这里阅读了几篇关于 PATH 的帖子,看过但没有运气。我相信它的版本差异。任何建议将不胜感激,谢谢!
【问题讨论】:
-
Class file version 52 seems to be Java 8。确定您在机器上使用 Java 7 运行它?
-
AFAIK 只有在 java 7 中编译它并尝试在 java 6 中运行它才会有所作为
-
@M.Sharma 不,反之亦然。将执行较旧的类文件版本(例如,Java 7 可以运行为 Java 6 及更低版本编译的类),但较新的版本被简单地报告为不受支持。
-
我认为您对某个地方的版本感到困惑,可能在您自己的系统上。 (请记住,可以在一个机器上安装多个不同的 Java 版本,因此从命令行执行
java -version不会总是告诉您 Eclipse 等正在使用什么。) -
无论如何,您可能需要在运行 javac 时指定目标版本。
标签: java