4

我制作了一些实用程序,可以在我正在制作的几个应用程序中使用它们。大多数应用程序支持 source 1.7,但其中一些不支持(例如,Android 应用程序)。

ArrayList<String> list = new ArrayList<>();
String s = "hi";
switch (s) {
    case "hi":

例如,低于 1.7 的 Java 版本不支持菱形运算符和切换字符串。

我希望在构建 Eclipse 或 Netbeans 项目时将源代码转换为与 1.7 以下的源代码兼容。

我能做到吗?如果是,如何?如果没有,那我应该怎么做?手动将所有源代码替换为 1.6 兼容?

4

2 回答 2

2

AFAIK,这是不可能的。

您可以进行交叉编译,但是:

javac 不接受低于其配置接受的源语言的目标(或编译策略)。

https://blogs.oracle.com/abuckley/entry/versioning_in_the_java_platform

这篇文章来自 2009 年,但我怀疑 Java SE 7 是否改变了这种情况。

解决方案:使用您想要支持的最小 Java 版本的语法(源代码)。

使用持续集成服务器,例如 Jenkins,并为每个想要支持的 JDK 配置一个 Job(不需要交叉编译,因为您使用了一些旧 Java 版本中不可用的 API,它可能会编译但在运行时失败。)

另请注意:Oracle 的 Java SE 6 已结束生命周期,建议在大多数情况下更新到 Java SE 7(例如,当您与 Oracle 没有支持合同时)。

于 2013-04-23T14:40:13.203 回答
1

我能做到吗?

理论上是的。

如果是,如何?

使用 Java 7 -> Java 6 源代码翻译器。但是,我还没有听说过有这样的翻译器存在……

如果没有,那我应该怎么做?手动将所有源代码替换为 1.6 兼容?

这是最实用的方法,除非你能找到别人已经实现的翻译器。

于 2013-04-23T14:52:40.777 回答