我正在尝试测试模块之间的交叉编译。我有一个使用 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>
名为 JAVA 的辅助模块
<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 项目中使用它作为依赖项。我哪里失踪了?
ERROR
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]
谢谢。
最佳答案
主要原因是您不能使用低于目标
值的源
值。如果您希望代码兼容Java 1.8,请将源代码降低到1.8
关于java - 无法使用源选项编译 Java 11 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60513814/