Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 1.3运行时上的Java 5编译二进制文件_Java_Backwards Compatibility - Fatal编程技术网

Java 1.3运行时上的Java 5编译二进制文件

Java 1.3运行时上的Java 5编译二进制文件,java,backwards-compatibility,Java,Backwards Compatibility,我可以知道在Java 1.3 JVM上运行Java 5编译代码(符合Java 1.3源代码/目标代码)是否存在任何问题吗 我知道这很奇怪,但我们的大多数客户都使用Java 5,但由于我们无法控制的情况,我们仍受到一些使用Java 1.3的客户的限制。我们的CI工具使用Java5编译器,但为了向后兼容,我们将源代码和目标代码的兼容性设置为Java1.3。我们没有将Java1.3用于CI,因为有一些单元测试不能在1.3上编译 这会成为一个问题吗 提前谢谢你 干杯, -Paul您将遇到的最大问题是,尽

我可以知道在Java 1.3 JVM上运行Java 5编译代码(符合Java 1.3源代码/目标代码)是否存在任何问题吗

我知道这很奇怪,但我们的大多数客户都使用Java 5,但由于我们无法控制的情况,我们仍受到一些使用Java 1.3的客户的限制。我们的CI工具使用Java5编译器,但为了向后兼容,我们将源代码和目标代码的兼容性设置为Java1.3。我们没有将Java1.3用于CI,因为有一些单元测试不能在1.3上编译

这会成为一个问题吗

提前谢谢你

干杯,
-Paul

您将遇到的最大问题是,尽管JVM生成的字节码将与1.3兼容,但您正在编译的JDK是Java 5。使用Java 5中存在的类,或者更可能是Java 1.3 JDK中不存在的方法非常容易。此代码可以正常编译,但无法在1.3运行时上运行。

让编译器检查应用程序中的源代码的唯一方法。仅使用1.3方法是指定指向1.3 rt.jar的
-bootclasspath
。注意,您可以从1.3 JRE中获得,它不需要1.3 SDK/编译器。当然,指定1.3的
-target

有趣。我假设
-target1.3
会拒绝编译,或者至少在引用比1.3更新的类时给出警告。如果没有这一点,
-target 1.3
似乎就没那么有用了。@asah:我可以从长期的经验中告诉您,使用新JDK版本的类和方法将是使用新JDK编译到旧目标的最大陷阱。实际上,我现在将所有代码编译为1.5,并使用retroweaver将一些应用程序编译回1.4或1.3,这样我就可以使用1.5中的编译器增强功能和其他功能。@Asaph:不,您必须给编译器一个1.3 rt.jar才能进行这些检查<代码>-目标主要是关于类文件格式和一些语言功能。是的。看来你是对的。人。但有一个解决办法。请参阅@Andrew Thompson的答案。@Will Development将其IDE源代码符合性设置为1.3,这样就可以清除Java 5特定的代码。我们的ant脚本还将-source-target选项设置为1.3。我关心的是运行时。所以在生产中,我们有1.3字节的代码(用Java5编译器编译)运行在1.3JVM上。我很想知道-target1.3是否足够,并且不会遇到运行时兼容性问题。1.4已经过时了。总有一天,支持较旧的JRE的维护成本将高于从这些客户那里获得的成本。这是真的,Andrew。我们有一些严格的限制。我们的一些客户正在使用仅支持Java 1.3的手持设备。要么Oracle将向这些设备添加JVM支持,要么我们的客户将不得不升级他们的设备。这里是+1。目前编译我们的源代码没有问题。我只是担心是否会有运行时问题。到目前为止,我们还没有遇到任何问题,但我还没有看到Sun或Oracle提供的任何支持这一点的正式文档。