使用JDK8通过IntelliJ创建与Java7兼容的Jar
我在我的普通桌面上使用JDK8,我有一个单独的linux机器,我正试图在这个机器上运行Java程序 我遇到的问题是linux机器运行的是jdk7,所以计算机基本上有JRE7,它正在运行。我的问题是,是否可以在JDK8中创建一个与Java7兼容的jar文件 我正在使用IntelliJ进行编译。我试图在1.7中编译,但当我最终尝试编译时,它给出了一个错误。我在这里编译它: 在1.8中,它可以很好地编译,但当我尝试在1.7中编译时,它就不起作用了使用JDK8通过IntelliJ创建与Java7兼容的Jar,java,intellij-idea,Java,Intellij Idea,我在我的普通桌面上使用JDK8,我有一个单独的linux机器,我正试图在这个机器上运行Java程序 我遇到的问题是linux机器运行的是jdk7,所以计算机基本上有JRE7,它正在运行。我的问题是,是否可以在JDK8中创建一个与Java7兼容的jar文件 我正在使用IntelliJ进行编译。我试图在1.7中编译,但当我最终尝试编译时,它给出了一个错误。我在这里编译它: 在1.8中,它可以很好地编译,但当我尝试在1.7中编译时,它就不起作用了 我知道简单的答案是将linux更新为JRE 8。但我
我知道简单的答案是将linux更新为JRE 8。但我很好奇,有没有办法让它向后兼容?或者,另一个答案是简单地在桌面上安装JDK7,以便使用JRE7在linux机器上运行?使用JDK 8构建的Java程序将仅在运行JRE 8(或更高版本)的机器上运行 我在本地Linux机器上编译类(使用JDK 8)并部署到运行JRE 7的远程服务器时发现了这一点。这些课程根本不起作用(就像你发现的那样) 如果您想在linux上使用JRE 8,我建议您使用
webupd8team
中的oracle-java8-installer
包。找到安装说明
如果您想编译到JDK 7,那么只安装JDK 8并选择编译1.7是不够的。您需要将JDK 7安装到并重新设置项目以使用JDK 7
您必须记住的是,JRE/JDK版本之间的差异不仅在于开发者可以使用的额外功能(例如Lambda函数),而且在于JRE本身得到了改进(效率、垃圾收集等)。
举一个极端的例子:如果您编写的代码只使用JDK1特性,而使用JDK8编译,那么它就不会在运行JRE1的机器上运行,因为Java类是用JRE8编译的
但请注意,如果Java代码只使用JDK 7或6等的特性,您可能会认为使用所需的最低JDK进行编译是一种良好的做法,以允许与更多机器兼容。好吧……你会有这种兼容性,但代价是使用低效、过时、可能易受攻击的编译类(有点极端,但你明白我的意思)。用JDK 8构建的Java程序只能在运行JRE 8(或更高版本)的机器上运行 我在本地Linux机器上编译类(使用JDK 8)并部署到运行JRE 7的远程服务器时发现了这一点。这些课程根本不起作用(就像你发现的那样) 如果您想在linux上使用JRE 8,我建议您使用
webupd8team
中的oracle-java8-installer
包。找到安装说明
如果您想编译到JDK 7,那么只安装JDK 8并选择编译1.7是不够的。您需要将JDK 7安装到并重新设置项目以使用JDK 7
您必须记住的是,JRE/JDK版本之间的差异不仅在于开发者可以使用的额外功能(例如Lambda函数),而且在于JRE本身得到了改进(效率、垃圾收集等)。
举一个极端的例子:如果您编写的代码只使用JDK1特性,而使用JDK8编译,那么它就不会在运行JRE1的机器上运行,因为Java类是用JRE8编译的 但请注意,如果Java代码只使用JDK 7或6等的特性,您可能会认为使用所需的最低JDK进行编译是一种良好的做法,以允许与更多机器兼容。嗯……您可能会有这种兼容性,但代价是使用效率低下、过时、可能易受攻击的编译类(有点极端,但您明白我的意思)。您使用的是什么?因为如果是,这意味着您无法根据JRE7构建项目 如果您没有使用任何Java 8功能,那么您可以通过下载JDK7并将项目切换为使用JDK7而不是JDK8来最轻松地构建到Java 7。您是否使用了JDK8?因为如果是,这意味着您无法根据JRE7构建项目
如果您没有使用任何Java 8功能,您可以通过下载JDK7并将项目切换为使用JDK7而不是JDK8来最轻松地构建到Java 7。您还应该将项目语言级别设置为1.7(以及模块语言级别,如果它们不同的话)。这是在“项目结构设置”对话框中完成的。之后,项目应该编译
请注意,您不应使用1.8中出现的任何API,但这些用法很可能会在编辑器中突出显示。您还应将项目语言级别设置为1.7(如果它们不同,还应设置模块语言级别)。这是在“项目结构设置”对话框中完成的。之后,项目应该编译
请注意,您不应该使用1.8中出现的任何API,但这些用法很可能会在编辑器中突出显示。那么,您使用的是Java 8功能吗?@ChiefTwoPencils认为他们的意思是,即使他们没有使用JDK 8功能,但仍然使用JDK 8编译,它是否会与JRE 7向后兼容,因为它们没有使用JDK 8功能。答案是否定的(见我的答案)。那么,你使用的是Java 8功能吗?@chieftwpencils认为他们的意思是,即使他们没有使用JDK 8功能,但仍然使用JDK 8编译,它是否会与JRE 7向后兼容,因为他们没有使用JDK 8功能。答案是否定的(见我的答案)。尽管如此,如果他们没有使用J8功能,并且安装了7,那么他们确实可以切换到7下编译。尽管如此,如果他们没有使用J8功能,并且安装了7,那么他们确实可以切换到7下编译。