首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java 7编译Java 6而不安装Java 6

使用Java 7编译Java 6而不安装Java 6
EN

Stack Overflow用户
提问于 2015-12-21 16:02:11
回答 2查看 1.3K关注 0票数 1

我的应用程序应该运行的目标系统使用Java 6。在我的开发机器上,我有Java 7。我可以不下载Java 6来进行开发吗?

我在http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html上找到了一个交叉编译的例子:

代码语言:javascript
复制
 javac -source 1.6 -target 1.6 -bootclasspath C:\jdk1.6.0\lib\rt.jar -extdirs "" OldCode.java

然而,这也要求存在一个属于Java6的rt.jar,还有更简单的方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-21 16:19:18

新的Java版本通常会改变Java语言(源文件和类文件格式)和Java。

Java编译器可以发出旧格式的类文件,即使源是新格式(这些版本分别由-target-source指定)。因此,您不需要旧的编译器来针对旧的JVM。

但是,对Java的更改更难解释。最简单的方法是使用您目标的Java (-bootclasspath)的API进行编译。当然,您可能会觉得自己没有使用更新的API,并跳过了这一步,但是确保实际使用旧运行时库并在其上进行测试是唯一的方法。

简而言之,虽然交叉编译很有帮助,因为可以在不同的Java版本中使用相同的源代码,但是您应该根据您想要使用的实际Java版本进行编译和测试,这确实需要旧的JRE (或JDK)。

顺便说一句,所有这些设置都可以在Java中使用。例如,在eclipse中,可以在项目的编译器设置中设置遵从级别,并将适当的"JRE系统库“添加到项目的”构建路径“中:

票数 7
EN

Stack Overflow用户

发布于 2015-12-21 16:19:46

以下命令应足以满足您的要求。‘'javac -source 1.6 -target 1.6 OldCode.java’

使用此命令,您将知道编译器应该生成与java 6兼容的类文件。任何特定于java 7的类文件都会导致编译错误。关于rt.jar,您不需要有特定于java6的版本。如前所述,上面的命令自动确保输出与java6兼容。

UPDATE/CORRECTION:

在浏览了下面的链接http://www.javaworld.com/article/2077388/core-java/what-version-is-your-java-code.html之后,很清楚为什么推荐使用-bootstrap标志以及-source和/或-target标志,这一点很重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34399752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档