当前位置: 首页 > 知识库问答 >
问题:

如何在Spring/Spring Boot pom.xml中指定Java11版本?

钱元徽
2023-03-14

将Java11指定为Spring(或Spring Boot)pom.xml文件中使用的版本的正确方法是什么?

例如,我需要在POM的java.version属性中放入什么值?

对于Java8,我们使用1.8,正如文档所示,对于Java9,我们使用1.9

我不确定Java11是否是1.11(尽管这似乎不太可能),并且在使用maven-compiler-plugin时,我看到它被指定为11,但我没有使用编译器插件。

例如。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <release>11</release>
    </configuration>
</plugin>

我到处找都找不到答案,因为几乎所有我读过的文档以及与Java版本相关的博客文章都只显示版本8或版本9。

那我该用什么呢?1.11还是仅仅11

我尝试了这两种方法,我的web服务器似乎可以正确启动和正确编译(IntelliJ显示信息:javac 11.0.2曾用于编译java Source)。但是,我并不完全相信更改java.version值是有用的,因为我可以将它设置为例如100,并且一切正常。

我能找到的唯一相关问题是:与Java11兼容的Spring最低版本、Spring在迁移到JDK11和OpenJDK11的Spring4.3.x后由于Hibernate错误导致启动失败,但这些问题并没有真正说明问题。

共有1个答案

端木安国
2023-03-14

简短回答:

正确的方法是对不同的Java版本使用 中的以下值:

  • Java 8:1.8或8
  • Java 9:9
  • Java 10:10
  • Java 11:11
  • Java 12:12
<properties>
   <java.version>11</java.version>
</properties>

实际上,最后它仍然使用maven-compiler-plugin来编译。Springboot只配置一个 属性,这样通过更改该值,您就可以隐式地将maven-compiler-plugin 更改为与 中指定的值相同的值:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>11</source>  <!-- same as <java.version> -->
        <target>11</target>    <!-- same as <java.version> -->
    </configuration>
</plugin>

详细回答:

好像你想要细节来说服你。

这是因为每个Spring Boot项目都会扩展父pomspring-boot-starter-parent,该pom定义了 ,如下所示:

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
        <source>11</source>   <!-- maven.compiler.source  -->
        <target>11</target> <!-- maven.compiler.target -->
    </configuration>
</plugin>

maven-compiler-plugin文档中, 是Java编译器(javac)的-source-target参数。然后,从javac文档中,我们可以看到允许这两个参数具有以下值:

  • 1.6:Java SE6中没有引入任何语言更改。但是,源文件中的编码错误现在被报告为错误,而不是像Java Platform的早期版本Standard Edition中所做的那样被报告为警告。
  • 6:1.6的同义词。
  • 1.7:编译器接受带有Java SE7中引入的特性的代码。
  • 7:是1.7的同义词。
  • 1.8:编译器接受具有Java SE 8中引入的功能的代码。
  • 8:是1.8的同义词。
  • 9:编译器接受带有Java SE9中引入的特性的代码。
  • 10:编译器接受带有Java SE10中引入的特性的代码。
  • 11:编译器接受具有Java SE 11中引入的特性的代码。
  • 12:编译器接受具有Java SE 12中引入的特性的代码。

因此,对于Java11, 应该设置为11

 类似资料:
  • 指定Java11作为Spring(或Spring Boot)pom中使用的版本的正确方法是什么。xml文件? 也就是说,我需要在属性? 对于Java8,我们使用,就像留档显示的那样,对于Java9,它是。 我不确定Java 11是否会是(尽管这似乎不太可能),我看到在使用 还是仅仅? 我尝试了这两种方法,我的网络服务器似乎启动正确,编译正确(IntelliJ显示),但是我并不完全相信改变值是什么,

  • Android Studio给我一个Gradle构建错误,看起来像这样: 现在它给了我这些可点击的提示: 我已经下载并安装了JDK 7。问题是,当我在“文件系统”中选择它时,我只能找到一个名为1.6的目录。0 JDK。此外,JDK 7的安装跳过了我选择安装目录的要点,所以我真的不确定它在哪里。我的java控制面板上说我有“Java7Update79”,所以我很确定我已经接近了,我只需要告诉andr

  • 我想使用最新版本的spring data mongodb,以便使用全文搜索功能,但我不知道如何使用spring boot starter data mongodb依赖项来指定这一点。 你可以在这里阅读:没有指定spring-data-mongodb版本的maven repository。 这是我的pom文件:

  • 问题内容: 我有一个需要节点版本12或更高版本的Node.js项目。有没有办法在packages.json文件中指定此名称,以便安装程序将自动检查并通知用户是否需要升级? 问题答案: 我认为您可以使用“引擎”字段: 正如您所说的那样,您的代码绝对不能与任何较低版本一起使用,您可能也希望“ engineStrict”标志: 可在npmjs网站上找到package.json文件的文档 更新资料 现在已

  • Spring Boot中有三个启动器:JarLauncher/Property tiesLauncher/WarLauncher。对于可执行jar,默认将使用JarLauncher。现在我想改用Property tiesLauncher,以便我可以使用外部类路径。我如何指定那是Spring boogradle插件? 根据D3。在这个文档D.3.1启动器清单中,我可以在清单中指定主类。MF如下: 但

  • 问题内容: 我在netbeans上编写了一个Maven代码,大约有2000多行。当我在netbeans上编译它时,一切都很好,但是如果我想在命令行上运行它,则会出现以下错误: 我尝试使用Java 1.3.1,编译器错误,但出现了更多错误。我从其他帖子中发现我应该修改pom.xml,但我不知道如何。这是我的pom.xml 如果您能帮助我,那就太好了。 问题答案: 请参阅配置页面以获取Maven编译器