8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 JDK 21 下,Maven 编译导致错误

Bahae El Hmimdi 2月前

31 0

当我执行 mvn install -DskipTests 时,Maven 给出了与虚拟线程相关的错误[ERROR] /E:/mycode/javaproject/rms/rms-parse/src/main/java/com/example/config/AsyncConfig.java:[19,49] ...

当我执行 mvn install -DskipTests Maven 时出现与虚拟线程相关的错误

[ERROR] /E:/mycode/javaproject/rms/rms-parse/src/main/java/com/example/config/AsyncConfig.java:[19,49] 
[ERROR]   :    newVirtualThreadPerTaskExecutor()
[ERROR]   : ?java.util.concurrent.Executorss
[ERROR] /E:/mycode/javaproject/rms/rms-parse/src/main/java/com/example/config/AsyncConfig.java:[25,50] 
[ERROR]   :    newVirtualThreadPerTaskExecutor()
[ERROR]   : ?java.util.concurrent.Executorss
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :rms-parse

这是我的主要工具版本:Maven版本:3.9.5JDK:21项目结构:

rms
  - rms-common
  - rms-parse
  - rms-admin
  - <some other sub-module>
  - pom.xml

rms的pom.xml为(我已经省略了依赖项相关的配置):

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.1</version>
  </parent>
  <groupId>com.example</groupId>
  <artifactId>rms</artifactId>
  <version>1.0</version>
  <packaging>pom</packaging>
  <modules>
    <module>rms-parse</module>
    <module>rms-mapper</module>
    <module>rms-service</module>
    <module>rms-common</module>
    <module>rms-admin</module>
    <module>rms-model</module>
  </modules>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>21</maven.compiler.source>
      <maven.compiler.target>21</maven.compiler.target>
  </properties>


  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.github.shalousun</groupId>
          <artifactId>smart-doc-maven-plugin</artifactId>
          <version>2.7.7</version>
          <configuration>
            <!---->
            <configFile>${basedir}/src/main/resources/smart-doc.json</configFile>
            <!---->
            <projectName>rms</projectName>
          </configuration>
          <executions>
            <execution>
              <phase>compile</phase>
              <goals>
                <goal>html</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.11.0</version>
          <configuration>
            <source>21</source>
            <target>21</target>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

以下是我在项目中使用虚拟线程的代码,但无法正确编译。

@Configuration
@Slf4j
public class AsyncConfig {

    @Bean
    public AsyncTaskExecutor asyncTaskExecutor() {
        return new TaskExecutorAdapter(Executors.newVirtualThreadPerTaskExecutor());
    }

    @Bean
    public TomcatProtocolHandlerCustomizer<?> protocolHandlerVirtualThreadExecutorCustomizer() {
        return protocolHandler -> {
            protocolHandler.setExecutor(Executors.newVirtualThreadPerTaskExecutor());
        };

    }
}

以下是 maven 关于 jdk 的设置,这个文件存在于两个位置,一个在 ~/.m2,另一个在 Maven 安装的 conf 目录中。我已使用相同的设置配置了两个位置。

  <profiles>
    <profile>    
      <id>jdk-21</id>    
      <activation>    
        <activeByDefault>true</activeByDefault>    
        <jdk>21</jdk>    
      </activation>    
      <properties>    
        <maven.compiler.source>21</maven.compiler.source>    
        <maven.compiler.target>21</maven.compiler.target>    
        <maven.compiler.compilerVersion>21</maven.compiler.compilerVersion>    
      </properties>    
  </profile>
  </profiles>
</settings>

我希望 Maven 能够成功编译我的项目。

帖子版权声明 1、本帖标题:在 JDK 21 下,Maven 编译导致错误
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Bahae El Hmimdi在本站《maven》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这对我有用:将其添加到你的 pom 文件中

    <properties>
      <java.version>21</java.version>
    </properties>
    
  • 对我来说,这很有用,但是你有没有注意到上面的控制台输出显示乱码?你知道如何修复它吗?

  • 就我而言,唯一需要 pom.xml 说明的是我想使用 Java 21 的更改是添加以下属性:

        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
    

    在 IntelliJ(在 Maven 选项卡中)刷新项目后,IDE 正确识别了 Java 21 的语言功能。

返回
作者最近主题: