我们可以使用jdk7 javac将java7特性的代码编译成java6字节码

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

所以要生成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 

根据这个文件 ,应该有可能jdk6 vs jdk5,任何人都知道为什么它在jdk7 vs jdk6中不起作用? 我做错了什么,还是只是官方不支持?

谢谢。

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

鉴于最新的JVM for Java 6和Java 7之间的JVM差别不大,我建议您考虑升级。 Java 6将于2012年11月完成(免费)服务,从现在开始三个月……

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