注意:请做而不是评论所有交叉编译的风险。谢谢。哪个JDK的发行版可以运行`javac -source 1.6 -target 1.5`?
我有,我们需要有Java 6的源代码编译为Java 5 JVM的情况(以确保JAX-WS的使用是正确的)。此前我们已经与蚂蚁ant脚本做到了这一点(这显然可以),但迁移到Maven的后,我们发现它的javac抱怨结束:
$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6
有用于Linux任何 Java发行(Ubuntu的11.10 ,x86)的javac可以做到这一点?
编辑:它似乎不是,因为在javac中的限制是相同的。解决方案(使这个需求消失)是从默认的javac编译器更改为maven-compiler-plugin中的eclipse编译器。
编辑:我发现,Eclipse编译器生成的javadoc的效用不同意匿名内部类的字节码。我正在为这个问题准备一份错误报告。
这个问题是如何不同于你的另一个关于此:http://stackoverflow.com/questions/8970920/maven-javac-source-release-1-6-requires-target-release-1-6 – 2012-02-13 13:01:46
为什么你需要'source'参数吗?使用Java5中没有的类吗? – 2012-02-13 13:02:30
@ThorbjørnRavn Andersen:如果你使用* -target 1.5 *进行编译,那么你会如何知道,例如,* ConcurrentSkipListSet *在1.5上不存在?现在我们确实需要支持那些不会(也不会)拥有Java 6的旧OS X机器,但我们只是简单地使用JDK1.5编译器,这很方便,因为我们得到:*“找不到符号:class ConcurrentSkipListSet”*(实际上IntelliJ被设置为1.5,但无论如何,这只是一个例子)。如果您需要定位1.5个JVM,不会使用JDK1.5编译器编译源代码是否是一种选择? (哦,你想保持覆盖,你评论说,在你自己的愚蠢) – TacticalCoder 2012-02-13 13:18:37