5

我在考虑一个java项目是否可以产生2个jar:一个用于java7,一个用于java6,是的,源代码可能会使用一些java7的新特性。

所以要生成 java6 jar,命令行如下:

javac -target 1.6 -bootclasspath jdk1.6.0\lib\rt.jar -extdirs "" MyApp.java

不幸的是,它只是发出一个错误:

javac: target release 1.6 conflicts with default source release 1.7

根据this document,jdk6 vs jdk5应该是可能的,有人知道为什么它在jdk7 vs jdk6中不起作用吗?我做错了什么,还是只是官方不支持?

谢谢。

4

2 回答 2

5

AFAIK,源和目标必须相同。即使对于 Java 6。唯一的例外是源可以是 1.1,目标可以是 1.0。

鉴于 Java 6 和 Java 7 的最新 JVM 之间的 JVM 差别不大,我建议您考虑升级。Java 6 也将在 2012 年 11 月结束(免费)服务,从现在起三个月...

于 2012-08-31T07:59:14.513 回答
2

即使有可能,这通常也是一个坏主意——如果你想确保你的代码可以在 java 6 上运行,那么你必须在 java 6 上构建它。每个新版本的 java 在类库中引入新类,并添加新的现有类的方法,即使您将 java 7 编译器设置为生成 6 兼容的字节码,它也不会捕获您调用仅 7 方法的情况。

于 2012-08-31T08:03:06.577 回答