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

如何在Spring/Spring Boot pom中指定Java版本。xml?

耿敏达
2023-03-14

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

也就是说,我需要在java中输入什么值。pom的版本属性?

对于Java8,我们使用1.8,就像留档显示的那样,对于Java9,它是1.9

我不确定Java 11是否会是1.11(尽管这似乎不太可能),我看到在使用maven编译器插件时,它被指定为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

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

我能找到的唯一相关问题是:与Java11兼容的最低Spring版本,在迁移到JDK11和Spring4.3后,Spring Boot由于Hibernate错误而失败。x和OpenJDK 11,但它们并没有真正阐明什么。

共有3个答案

卢黎明
2023-03-14

我添加它作为一个答案,这样它可以帮助更多的人:

由于Java 9的版本被指定为91011,等等,而不是1.81.7等等。这里有一些进一步的阅读。

使用

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
      <source>11</source> -- Using JDK 11 to compile
      <target>11</target> -- Using JDK 11 as target
    </configuration>
  </plugin>
</plugins>

这篇文章对在JDK 11中使用maven-compiler-plugin很有帮助。

叶经略
2023-03-14

如果有人希望将Java11指定为gradle项目中Spring(或Spring Boot)中使用的版本,那么在build.gradle文件中使用源兼容性='11'或源兼容性='1.11'

plugins {
id 'org.springframework.boot' version '2.1.4.RELEASE'
}

apply plugin: 'io.spring.dependency-management'

group = 'au.com.ranuka'
version = '0.0.1-SNAPSHOT'

sourceCompatibility = '11'
//or 
sourceCompatibility = '1.11'

repositories {
   mavenCentral()
}

dependencies {

}
万修为
2023-03-14

简短回答:

正确的方法是在

  • Java8:1.8或8
  • Java9:9
  • Java10:10
  • Java11:11
  • Java12:12
  • Java16:16
  • Java17:17

所以对于Java 11,它应该是:

<properties>
   <java.version>11</java.version>
</properties>

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

实际上,最后它仍然使用maven编译器插件进行编译。Springboot只是配置了一个

<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父,它定义了

<properties>
    <java.version>1.8</java.version>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

在maven编译器插件文档中,maven。编译器。sourcemaven。编译器。target

<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编译器插件docs,

  • 1.6:JavaSE6中没有引入语言更改。然而,源文件中的编码错误现在被报告为错误,而不是像Java Platform Standard Edition早期版本那样的警告
  • 6:1.6的同义词
  • 1.7:编译器接受带有JavaSE7中引入的特性的代码
  • 7:1.7的同义词
  • 1.8:编译器接受带有JavaSE8中引入的特性的代码
  • 8:1.8的同义词
  • 9:编译器接受带有JavaSE9中引入的特性的代码
  • 10:编译器接受带有JavaSE10中引入的特性的代码
  • 11:编译器接受带有JavaSE11中引入的特性的代码
  • 12:编译器接受带有JavaSE12中引入的特性的代码

因此,

 类似资料:
  • 将Java11指定为Spring(或Spring Boot)pom.xml文件中使用的版本的正确方法是什么? 例如,我需要在POM的属性中放入什么值? 对于Java8,我们使用,正如文档所示,对于Java9,我们使用。 我不确定Java11是否是(尽管这似乎不太可能),并且在使用时,我看到它被指定为,但我没有使用编译器插件。 例如。 我到处找都找不到答案,因为几乎所有我读过的文档以及与Java版本

  • 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文件:

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

  • 我用Netbeans编写了一些Maven代码,大约有2000多行。当我在Netbeans上编译它时,一切都很好,但如果我想在命令行上运行它,我会得到这些错误: 我尝试使用Java 1.3.1,编译器错误,但我得到更多的错误。我从其他帖子中发现我应该修改,但我不知道如何修改。下面是我的 如果你能帮我就太好了!

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