gpt4 book ai didi

java - 在 JVM 5 或更低版本上运行 JVM 6 编译的代码

转载 作者:行者123 更新时间:2023-11-30 05:57:54 25 4
gpt4 key购买 nike

在 JVM 版本 6 上执行编译为字节码的类并在较低版本 JVM(例如 1.4)上执行相同的效果是什么?

最佳答案

不确定您真正要问的是什么,但如果您编译针对 Java 6 的 Java 源文件,它将无法在较旧的 JVM(例如 1.4)上执行。

: ~/tmp > javac -version
javac 1.6.0_22
: ~/tmp > javac Test.java
: ~/tmp > java Test
Hello World
: ~/tmp > module add jdk/1.4.2 # switching to Java 1.4.2
: ~/tmp > java Test
Exception in thread "main" java.lang.UnsupportedClassVersionError:
Test (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:539)
at java.security.SecureClassLoader.defineClass(ClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
: ~/tmp >

正如 @The-MeLLeR 所指出的,您仍然可以通过使用 -target 选项,使用 1.6 编译器编译为 1.4 兼容代码。但是请记住,这仅在您不使用任何 1.5/1.6 特定功能或 API 类时才有效

例如,如果您尝试使用 -target 1.4 编译 for-each 循环,您将收到类似于以下消息的内容:

Test.java:3: ';' expected
for (int i : new int[] { 1, 2, 3 })
^

关于java - 在 JVM 5 或更低版本上运行 JVM 6 编译的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4991421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com