0

我使用 JDK 版本为 1.7 的 Netbeans 创建了一个 Java 应用程序
现在如何在安装了 JDK 1.5 的不同机器上编译/运行相同的应用程序而不对代码进行任何更改?

当我尝试编译时,我收到一条错误消息,提示 JDK 版本不匹配。

下面给出的是错误:

java.lang.UnsupportedClassVersionError: MTPS : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: MTPS.  Program will exit.
4

3 回答 3

2

从一个 java 版本到另一个版本的更改添加了不同的功能。例如,自 java 1.5 以来添加了枚举功能,如果您尝试在 1.4 上编译它,则会出现错误。

顺便说一句,尝试使用 JDK 1.5 编译您的应用程序,然后如果成功,请尝试运行它。

于 2012-03-19T08:54:39.430 回答
0

您需要注意 jdk 1.4 到 jdk1.6 和 jdk 1.6 到 jdk 7 中的功能更改。通用,断言是 jdk1.5 中的新实现。开关案例(带字符串)和异常处理的一些增强是 JDK7 中的新功能。

于 2012-03-19T10:37:14.250 回答
0

可以使用javac 的交叉编译选项为早期的 JRE 编译代码。如果使用 1.7 JDK 并以 JRE 1.5 为目标,rt.jar则应提供 1.5 版本作为引导类路径(有关详细信息,请参阅文档)。

于 2012-03-19T11:05:41.143 回答