我维护用Java编写的Java tutorial application,它演示了Java 6,7和8的功能。每个教程屏幕都根据需要由Class.forName动态加载。 Java 7类需要使用Java 7结构,Java 8类需要使用Lambda和Date/Time API。如何在Java中定位较低的语言级别
我希望这可以被所有这三种语言级别的用户访问,只是如果他们在Java 6上,我们不会加载Java 7或8类,如果在7上我们不会加载Java 8类。
我们将动态地确定运行时级别并忽略更高级别,只能通过Class.forName()加载相关的类。很显然,使用Java 6或7的用户将无法用8的幻数执行代码。因此,我想在构建中定位较早的Java版本。
换句话说,我想源设置为1.8和目标〜1.6
然而Maven的(和javac)阻止我指定目标比源下。
有没有其他办法?
我以前用Android的JavaFX代码完成了这个工作,在那里我可以使用Lambdas构建JavaFX 8代码,但是随后将它部署到当前的Android版本。但在那种情况下,有一个特殊的SDK处理lambda表达式并构建到Java 7.
有没有什么办法可以用标准Java 8来实现呢?
你唯一的选择是'-source 1.1 -target 1.0'在其他情况下,它们必须是相同的。 – 2014-10-01 18:16:18
您需要为每个版本和另一个版本组合一个jar。 – 2014-10-01 18:18:01
:(我很害怕你会这么说 – 2014-10-01 18:21:02