Java 1.3 运行时上的 Java 5 编译的二进制文件
我是否可以知道在 Java 1.3 JVM 上运行 Java 5 编译的代码(符合 Java 1.3 源/目标合规性)是否存在任何问题?
我知道这很奇怪,但我们的大多数客户都使用 Java 5,但由于我们无法控制的情况,我们受到少数仍然使用 Java 1.3 的限制。我们的 CI 工具使用 Java 5 编译器,但我们将源和目标合规性设置为 Java 1.3 以实现向后兼容性。我们没有使用 Java 1.3 进行 CI,因为有些单元测试无法在 1.3 上编译。
这会是一个问题吗?
先感谢您!
干杯, ——保罗
May I know if there are any issues running a Java 5-compiled code (with Java 1.3 source/target compliance) on a Java 1.3 JVM?
I know this is quite odd, but most of our customers are on Java 5 but we are restricted by a few still on Java 1.3 due to conditions beyond our control. Our CI tool uses Java 5 compiler but we set our source and target compliance to Java 1.3 for backward compatibility. We are not using Java 1.3 for CI because there are unit tests that does not compile on 1.3.
Will this be an issue?
Thank you in advance!
Cheers,
- Paul
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
让编译器检查应用程序中的源代码的唯一方法。唯一使用1.3的方法是指定一个指向1.3 rt.jar的
-bootclasspath
。请注意,您可以从 1.3 JRE 获得这一点,它不需要 1.3 SDK/编译器。当然,指定-target
为 1.3。The only way to get the compiler to check that source in your app. only uses 1.3 methods is to specify a
-bootclasspath
pointing to a 1.3 rt.jar. Note you can get that from a 1.3 JRE, it does not require a 1.3 SDK/compiler. Of course, specify a-target
of 1.3.您将遇到的最大问题是,虽然 JVM 生成的字节代码将兼容 1.3,但您编译所针对的 JDK 是 Java 5。使用 Java 中存在的类(或更可能是方法)非常容易5,但不在 1.3 JDK 中。该代码可以正常编译,但无法在 1.3 运行时运行。
The biggest problem you will have is that while the JVM generated byte code will be compliant with 1.3, the JDK you're compiling against is Java 5. It is very easy to use a class, or more likely, a method that exists in Java 5, but not in the 1.3 JDK. This code will compile fine but will fail to run on a 1.3 runtime.