我在普通台式机上使用JDK8,并且有一个单独的linux盒,试图在其上运行Java程序。
我遇到的问题是linux机器正在运行jdk7,因此计算机基本上已经运行了JRE7。我的问题是,是否有可能在JDK8中创建一个与Java 7兼容的jar文件?
我正在使用IntelliJ进行编译。我尝试在1.7中进行编译,但最终尝试这样做时却给出了错误。我在这里编译:
在1.8中,可以很好地进行编译,但是当我尝试在1.7中进行编译时,它将无法工作。
我知道简短的答案是将linux更新为JRE8。但是我很好奇,有没有办法使它向后兼容?还是另一种答案,就是简单地在桌面上安装JDK7,以便使用JRE7在Linux机器上运行它?
使用JDK 8构建的Java程序只能在运行JRE 8(或更高版本)的计算机上运行。
在尝试在本地Linux机器上编译类(使用JDK 8)并将其部署到运行JRE 7的远程服务器时,我发现了这一点。这些类根本行不通(就像您发现的那样)。
如果要在Linux上使用JRE 8,建议使用中的oracle-java8-installer
软件包webupd8team
。可以在此处找到安装说明(假设基于Debian的发行版)。
如果要编译为JDK 7,仅安装JDK 8并选择编译1.7还不够。您需要安装JDK 7并重新启动项目才能使用JDK 7。
您必须记住的是,JRE / JDK版本之间的区别不仅在于开发人员可以使用的其他功能(例如Lambda函数),而且还改进了JRE本身(效率,垃圾回收等)。
举一个极端的例子:如果您编写的代码仅使用JDK 1功能,但使用JDK 8对其进行了编译,则该代码将无法在运行JRE 1的计算机上运行,因为考虑到Java类是在考虑JRE 8的情况下进行编译的。
不过请注意,如果您使用的是Java代码,则仅使用JDK 7或6等中的功能,那么您可能会认为,使用允许与更多计算机兼容的最低JDK进行编译是一种好习惯。好吧……您将具有这种兼容性,但是要使用效率低下,过时的,可能易受攻击的编译类(尽管有点极端,但是您明白我的意思)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句