首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven不使用JDK 11

Maven不使用JDK 11
EN

Stack Overflow用户
提问于 2021-02-24 21:48:32
回答 2查看 764关注 0票数 1

我最近下载了JDK11和用于JDK11的OpenJ9 JRE。我已经很好地设置了Java类路径。

当我运行java -version命令时,我得到:

代码语言:javascript
复制
openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.24.0, JRE 11 Windows 10 amd64-64-Bit Compressed References 20210120_899 (JIT enabled, AOT enabled)
OpenJ9   - 345e1b09e
OMR      - 741e94ea8
JCL      - 0a86953833 based on jdk-11.0.10+9)

但我的Maven仍然指向我安装的旧Java8。运行mvn -version会给我带来:

代码语言:javascript
复制
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: H:\apache-maven-3.6.3\bin\..
Java version: 1.8.0_271, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_271\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

因此,当我编译一个maven模块时,我得到了以下错误:

代码语言:javascript
复制
Caused by: java.lang.IllegalArgumentException: invalid target release: 11

我在父级pom.xml中设置了以下内容:

代码语言:javascript
复制
<properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
    <maven.compiler.target>11</maven.compiler.target>
    <maven.compiler.source>11</maven.compiler.source>

EN

回答 2

Stack Overflow用户

发布于 2021-02-24 21:53:22

你可以在maven编译器plugin中使用元素。

正如这里所描述的,这里的How to tell compiler to use openjdk 11 via pom.xml是一个更高级的例子,它允许你在你的主要Java版本是8的时候编译Java11。我的大多数项目仍然是java 8,所以我发现它很有用。

代码语言:javascript
复制
<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <release>11</release>
                <fork>true</fork>
                <executable>C:\Program Files\Java\jdk-11.0.2\bin\javac</executable>
            </configuration>
        </plugin>
票数 1
EN

Stack Overflow用户

发布于 2021-02-26 23:26:09

我使用maven的工具链机制,运行良好,你可以很容易地切换到jdk编译器关于哪个项目:

代码语言:javascript
复制
    <toolchains xmlns="http://maven.apache.org/TOOLCHAINS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/TOOLCHAINS/1.1.0 http://maven.apache.org/xsd/toolchains-1.1.0.xsd">
      <toolchain>
        <type>jdk</type>
        <provides>
          <version>1.8</version>
        </provides>
        <configuration>
          <jdkHome>your_java_8_local_path</jdkHome>
        </configuration>
      </toolchain>
      <toolchain>
        <type>jdk</type>
        <provides>
          <version>11</version>
        </provides>
        <configuration>
          <jdkHome>your_java_11_local_path</jdkHome>      
        </configuration>
      </toolchain>
    </toolchains>

然后只需在您的pom.xml中声明它,如下所示(通过此处的示例使用JDK11编译):

代码语言:javascript
复制
<build>     
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-toolchains-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>toolchain</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <toolchains>
                        <jdk>
                            <version>11</version>
                        </jdk>
                    </toolchains>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-toolchains-plugin</artifactId>
            </plugin>
     </plugins>
</build>    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66352216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档