2017-08-01 71 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