2016-09-06 70 views
0

我在intellij中使用了Xtend,使用Xtend-plugin。我的項目語言級別設置爲Java 8,Xtend可以很好地編譯爲Java 8(例如使用lambda表達式)。Xtend force java 7語言級別

由於具體原因,我需要Xtend生成Java 7代碼,而不更改剩餘項目(Java 8)的語言級別。

在Xtend項目設置中,我可以設置語言級別,但是忽略此選項。我相信它被忽略了,因爲剩下的項目仍然使用JDK 8和Java 8語言級別。

是否有強制Xtend使用不同語言級別的選項?

+0

Java 7代碼完全兼容Java 8代碼。你有什麼證據證明這個設置被忽略? – Makoto

+0

它生成lambda表達式。生成的代碼用於GWT客戶端,不支持新的Java 8功能。 – fwind

回答

0

至少有一個bug中的Xtend編譯器這樣可以防止交叉編譯到比項目類路徑中的版本更低的JDK版本。

實施例:

#[ 42, 43 ].forEach[ println(it) ] 

如果如果配置的項目以具有在類路徑 Java的8類,生成的Java碼將自動使用Java-8 API(該forEach默認方法IterableConsumer,...)

這是相關的任何源/目標級別設置。

0

我沒有很多細節上對上述問題,但假設如果該項目是基於Maven的,那麼你可以在pom.xml目標編譯

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<version>3.5.1</version> 
<configuration> 
    <source>1.7</source> 
    <target>1.7</target> 
</configuration> 
</plugin>