Tho*_*sen 3 java linux ubuntu javac
注:请不要不上交叉编译的所有危险评.谢谢.
我有一种情况,我们需要为Java 5 JVM编译Java 6源代码(以确保JAX-WS的使用是正确的).以前我们用ant ant脚本(显然可以)这样做了,但是在迁移到Maven之后我们发现它最终以javac抱怨:
$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6
Run Code Online (Sandbox Code Playgroud)
是否有任何对Linux(Ubuntu的11.10,86),其中使用javac可以做到这一点的Java分配?
编辑:它似乎没有,因为限制在javac是相同的.解决方案(这使得需要消失)是从默认的javac编译器改为maven-compiler-plugin中的eclipse编译器.
编辑:我发现Eclipse编译器为javadoc实用程序不同意的匿名内部类生成字节代码.我正在为此问题准备一份错误报告.
根据文档(Java 5,Java 6),当您按照交叉编译示例中的说明操作时,Oracle SDK应该能够执行此操作.
Java 6应支持1.3到1.6之间的任何版本-target; 它没有说明在源中使用泛型和其他"兼容"功能时会发生什么.编译器应该能够剥离它们.
游戏中的另一个罪魁祸首可能是javac:编译器可能能够处理这组参数,但命令行工具可能会冒犯.
在这种情况下,使用Java Compiler API编写自己的命令行.这可能会带来一些你无法实现的技巧.
您也可以尝试Eclipse编译器(请参阅" 使用批处理编译器 ").
由于Java的工作原理,这可能会失败:只要X <= Y,Java X代码就可以在Java Y上运行.因此,虽然您可以轻松地为Java 6 VM编译Java 1.4代码,但反之并非总是如此.
如果其他一切都失败了,那就编写一个预处理器来读取源代码并删除不支持的元素(比如@Override在接口上).只要您使用Java 6 编译带有注释的代码,转换后的代码也应该是安全的(除非您的代码剥离器有错误...)
| 归档时间: |
|
| 查看次数: |
5550 次 |
| 最近记录: |