我正在考虑一个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中不起作用?我做错了什么,还是官方不支持?
感谢。
答案 0 :(得分:5)
AFAIK,源和目标必须相同。即使对于Java 6.唯一的例外是源可以是1.1和目标1.0。
鉴于最新的JVM for Java 6和Java 7之间的JVM差别不大,我建议您考虑升级。 Java 6也将于2012年11月完成(免费)服务,从现在起三个月......
答案 1 :(得分:2)
即使有可能,这通常也是一个坏主意 - 如果你想确保你的代码可以在java 6上运行,那么你必须在java 6上构建它。每个新版本的java都会在类库中引入新类,并为现有类添加新方法,即使您将java 7编译器设置为生成6兼容字节码,也不会捕获调用7-only方法的情况。