Can';t使用源代码选项编译Java11代码

Can';t使用源代码选项编译Java11代码,java,maven,Java,Maven,我正在尝试测试模块之间的交叉编译。我有一个模块使用Java1.8,另一个模块使用Java11。我试图使用Java11模块作为Java1.8项目的依赖项。当我试图编译Java11模块时,maven显示了一个错误 主模块 理论上,我应该能够用Java11编译器编译第二个模块,并在MinJava8JRE中使用它。因此,我也可以在Java8项目中使用它作为依赖项。我在哪里失踪 错误 谢谢。主要原因是您不能使用低于目标值的源值。如果希望代码与Java 1.8兼容,请将源代码降低到1.8 有几个术语 Jav

我正在尝试测试模块之间的交叉编译。我有一个模块使用Java1.8,另一个模块使用Java11。我试图使用Java11模块作为Java1.8项目的依赖项。当我试图编译Java11模块时,maven显示了一个错误

主模块 理论上,我应该能够用Java11编译器编译第二个模块,并在MinJava8JRE中使用它。因此,我也可以在Java8项目中使用它作为依赖项。我在哪里失踪

错误


谢谢。

主要原因是您不能使用低于
目标值的
值。如果希望代码与Java 1.8兼容,请将源代码降低到1.8

有几个术语

Java编译器:它是由Java_HOME定义的,或者如果您通过为Maven选择另一个Java版本来覆盖它,那么就是这样。您可以使用Java11编译器编译Java6代码。因为它具有向后兼容性

来源:您希望使用Java功能的最低Java版本。例如,如果我想使用lambdas,至少我必须使用source8。如果我想使用Java11特性,我需要将其设置为11这是关于您想要使用的Java功能的全部内容

目标:可以运行我的功能的最低JRE版本。例如,如果我设置Java 8,我至少需要JRE 8才能使用lambdas。我不能使用JRE 7或更低版本,因为他们不知道lambda是什么

如果java编译器版本为8,则无法编译源代码11类。因为编译器不知道如何编译Java11。一开始我失败了,因为我的源代码比源代码低。当我换成11&11时,我又失败了,因为这次的编译器比较旧(它是Java8)


谢谢

我应该能够用java 11编译器编译第二个模块,并在min java 8 JRE中使用它。谁告诉你的?Java8甚至没有模块系统(来自Java9),你能解释一下我在这里做的和这个之间的区别吗。感谢无效源代码版本看起来您没有使用JDK11来编译代码,除此之外,这样做可能不是一个好主意……问题是:您真正想做什么?可以使用较低的源代码和较高的目标代码,但不能使用较低的源代码和较高的目标代码。因此,第二个模块中的源11和目标1.8是incorrect@Berkin你不明白吗?您应该能够在Java 6项目中使用依赖项如果您在Java 7 JRE上运行项目,您可以在Java 7中使用Java 6,或在Java 11中使用Java 8,而不是相反。。据说它可以使用Java7工具链编译,但目标版本是Java6。不是源7目标6吗?
<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
    }
}
 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]