JAVA编译:使用新的JVM版本编译并在旧版本上运行

这是我的问题的一个小解释.

我有一个用java 1.5编译的应用程序.此应用程序安装在客户端安装的2000 pc(blockboxes)上.
我的应用程序的jar经常被更新以添加新的功能和修复,但由于技术原因,更新java版本并不是很容易,所以我必须在那些现有的机器上继续使用Java 1.5.

几个月前,我收到了对此申请的新要求的请求.为了完成这项任务,我在此应用程序中添加了Hazelcast的用法.

我的问题如果如下:
  – Hazelacast jar文件需要Java 1.6或更高版本,所以我必须用1.6编译我的应用程序
  – 使用hazelcast的新功能只能通过设置新参数按需激活.这意味着它不会用于2000已安装的黑盒子中.
  – 所有新的黑匣子都将与Jave 1.6或更高版本一起安装,以便能够使用Hazealcast功能.

我的问题是我希望使用Java 1.5和使用1.6或更高版本的新黑盒子为我的应用程序提供唯一的源代码和独特版本的应用程序.

一开始,我的想法是始终使用1.5版进行编译,并确保只使用java 1.6或更高版本在blockboses中激活新功能.这个选项不起作用,因为当我用1.5编译时,编译器抱怨Hazelcast jar文件需要1.6 🙁

第二种选择是使用1.6进行编译,但是我不能确定我的应用程序在使用1.5的所有黑盒子上仍能正常工作. 🙁

我想知道这里是否有人知道如何解决这类问题?

如果我的解释不清楚,请告诉我;)

在此先感谢您的帮助.

最佳答案 您可以使用JDK 1.6将代码编译为Java 1.5字节码,只需注意以下事项:

> -source = 1.5和-target = 1.5编译器选项
> bootclasspath应该指向JRE 1.5的rt.jar

有关详细信息,请参阅此帖子:http://www.draconianoverlord.com/2014/04/01/jdk-compatibility.html

该帖子还建议尽可能使用较旧的JDK构建应用程序.您需要找出不同的构建过程并从类路径中排除不兼容的库.如果您使用Maven,请考虑使用两个带有可选父文件的pom.xml文件.

点赞