[英]Can't compile from source files with Java 11 and JavaFX on Linux Debian 10
[英]Can't Compile Java 11 Code With Source Options
我正在嘗試測試模塊之間的交叉編譯。 我有一個使用 Java 1.8 的模塊,另一個使用 Java 11 的模塊。我試圖使用 Java 11 模塊作為對 Java 1.8 項目的依賴。 當我嘗試編譯 Java 11 模塊時,maven 顯示錯誤。
<project>
<dependencies>
<dependency>
<groupId>com.berkin</groupId>
<artifactId>java</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.berkin</groupId>
<artifactId>java</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
public class Test {
public void test(){
System.out.println(" ".isEmpty()); //true
}
}
從理論上講,我應該能夠使用 java 11 編譯器編譯輔助模塊並在 min Java 8 JRE 中使用它。 因此我也可以在 Java 8 項目中使用它作為依賴項。 我在哪里失蹤?
錯誤
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project java: Fatal error compiling: invalid source release: 11 -> [Help 1]
謝謝。
主要原因是您不能使用低於target
的source
值。 如果您希望代碼與 Java 1.8 兼容,請將源代碼降低到 1.8
感謝@Elliott Frisch,我明白了
有幾個術語;
Java 編譯器:它由 JAVA_HOME 定義,或者如果您通過為 Maven 選擇另一個 Java 版本進行覆蓋,那就是它。 您可以使用 Java 11 編譯器編譯 Java 6 代碼。 因為它具有向后兼容性。
來源:您要使用 Java 功能的最低 Java 版本。 例如,如果我想使用 lambdas,至少我必須使用 source 8。如果我想使用 Java 11 features,我需要將它設置為 11。它都是關於你想要使用的 Java Features
目標:可以運行我的功能的最低 JRE 版本。 例如,如果我設置 Java 8,我至少需要 JRE 8 才能使用 lambda。 我不能使用 JRE 7 或更低版本,因為他們不知道 lambda 是什么。
還
如果 java 編譯器版本為 8,則無法編譯源 11 類。 因為編譯器不知道如何編譯Java 11。我一開始失敗了,因為我低於源代碼。 改成11&11的時候又失敗了,因為這次編譯器比較老了(是Java 8)
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.