Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
使用JDK8通过IntelliJ创建与Java7兼容的Jar_Java_Intellij Idea - Fatal编程技术网

使用JDK8通过IntelliJ创建与Java7兼容的Jar

使用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。但我

我在我的普通桌面上使用JDK8,我有一个单独的linux机器,我正试图在这个机器上运行Java程序

我遇到的问题是linux机器运行的是jdk7,所以计算机基本上有JRE7,它正在运行。我的问题是,是否可以在JDK8中创建一个与Java7兼容的jar文件

我正在使用IntelliJ进行编译。我试图在1.7中编译,但当我最终尝试编译时,它给出了一个错误。我在这里编译它:

在1.8中,它可以很好地编译,但当我尝试在1.7中编译时,它就不起作用了


我知道简单的答案是将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下编译。