This question already has an answer here:
Maven Java Version Configuration ignored by Eclipse/Idea
                                
                                    (1个答案)
                                
                        
                3年前关闭。
            
        

我已经安装了JDK 1.8,并将JAVA_HOME配置为JDK 1.8。我正在使用apache-maven-3.0.5。我创建了一个maven项目并将maven-compiler-plugin(3.3)<source><target>配置为1.7。

问题是,如果我使用任何Java 1.8功能(例如String.join()map.remove(key, value)),即使将编译器级别设置为1.7,它仍然可以成功编译。

我观察到的一件事是,如果我将JAVA_HOME指向JDK 1.7目录,那么它将引发编译错误。

但是我的期望是,即使我在pom.xml中将编译器级别设置为1.7时,也有指向JDK 1.8的JAVA_HOME,它也应服从该编译器级别(1.7)并抛出错误。

我想念什么?

PS:从Eclipse IDE运行时,它使用的是正确的JDK(1.7)并显示错误。但是,当我从命令行运行它时,我遇到了这个问题。

最佳答案

您正在混合两件事:


编译器(例如default方法,lambdas)
Java库/ API(例如StreamOptionalString.join


Maven只能检查编译器级别,除非您希望代码在JDK 1.7上运行,否则您正在使用JDK 1.8中的库进行操作。

而且,即使Java也不总是知道哪些方法/类出现在标准库的较新版本中(并非所有方法/类都标记有@since标记),因此,如果尝试使用javac进行编译,则会得到类似的结果。

08-07 19:07
查看更多