2017-08-01 109 views
-1

我有一个jar文件,它是在java 8中编译的,我在java 6环境中编写java代码,它应该使用java 8编译的jar文件。编译器如何理解java 8编译jar到Java 6编译java类文件

怎么可能 - 编译器如何理解java 8的新特性(接口,lambda表达式等方法定义)?

+2

Java 6运行时环境不能理解Java 8的特定功能,因此在Java 6上运行Java 8代码不会奏效。 – Jesper

+0

我还没有执行我的代码,我刚刚在eclipse中使用java 6编译器编写代码,并使用java 8编译的jar。 – Afgan

+0

如果你没有执行?那你在找什么? – sForSujit

回答

1

简单的回答:你可以不是那样做。

Java8包含Java6编译器所做的语法而不是知道。

有像Retro lambda这样的项目可以让您在较旧的JVM上使用Java8功能。但是你不能改变java6编译器来神奇地知道如何处理java8源代码。

而使用复古lambda时,重点是:总有一定的机会,某些特定的东西不会像你期望的那样工作。除此之外:在考虑使用Java8日期时间API时,您将不得不寻找另一个替代品。换句话说:在Java6环境中工作的“Java8”始终是一个上坡的战斗。它可能导致很多工作,并造成很大的痛苦。含义:在走下这条路之前 - 宁愿花一些时间评估一下,如果它不是便宜在长期运行将您的环境移动到使用Java8。无论如何,你将不得不在某个时刻。

+1

谢谢你的回答,我的问题是不同的东西,我不想在java 6中使用java 8功能。但我的问题是如何java 6编译器可以使用java 8精选类 – Afgan

+0

@Afgan它不能。 JDK 6编译器无法使用Java 8语言功能编译源代码。 – Jesper

+0

@Afgan查看我的更新 - Jesper是正确的 - 你所要求的是不可能的。 – GhostCat