You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven插件结合Eclipse Sisu在Java 17下无法正常工作

Maven插件组件在Java 17下无法通过PlexusContainer按名称查找的问题

组件定义示例

@Named("myComponent")
public class MyComponent extends AbstractComponent {
}

问题现象

该问题与Java版本强相关,新版本Java中组件无法正确注册:

  • Java 8:container.hasComponent(MyComponent.class, "myComponent") 返回 true
  • Java 17:container.hasComponent(MyComponent.class, "myComponent") 返回 false

背景配置

maven-plugin-plugin配置

负责生成组件扫描所需的描述符,当前配置如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-plugin-plugin</artifactId>
    <version>3.9.0</version>
    <configuration>
        <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
    </configuration>
    <executions>
        <execution>
            <id>descriptor-help</id>
            <goals>
                <goal>helpmojo</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Eclipse Sisu插件配置

<plugin>
    <groupId>org.eclipse.sisu</groupId>
    <artifactId>sisu-maven-plugin</artifactId>
</plugin>

当前依赖列表

最低支持Maven版本为3.5.4,依赖如下:

  • org.apache.maven:maven-artifact:3.5.4:compile
  • org.apache.maven:maven-plugin-api:3.5.4:compile
  • org.apache.maven:maven-core:3.5.4:compile
  • org.apache.maven:maven-model:3.5.4:provided
  • org.apache.maven:maven-model-builder:3.5.4:provided
  • org.apache.maven:maven-settings:3.5.4:provided

  • org.apache.maven.plugin-tools:maven-plugin-annotations:3.6.1:provided

  • org.codehaus.plexus:plexus-utils:4.0.0:compile
  • org.codehaus.plexus:plexus-xml:3.0.0:compile
  • org.codehaus.plexus:plexus-classworlds:2.5.2:provided

  • org.eclipse.sisu:org.eclipse.sisu.plexus:0.9.0:M2:provided

  • javax.inject:javax.inject:1:provided
  • javax.annotation:javax.annotation-api:1.3.2:provided

解决方案:版本组合与Java 17支持说明

1. 核心问题根源

你当前依赖的Maven 3.5.4版本不支持Java 17,Maven从3.8.0版本开始正式兼容Java 17。同时旧版Eclipse Sisu(0.9.0.M2)的里程碑版本对Java 17的模块系统、反射限制支持不足,导致组件注册失败。

2. 推荐的兼容版本组合

核心Maven依赖(升级到兼容Java 17的版本)

org.apache.maven:maven-artifact:3.8.6:compile
org.apache.maven:maven-plugin-api:3.8.6:compile
org.apache.maven:maven-core:3.8.6:compile
org.apache.maven:maven-model:3.8.6:provided
org.apache.maven:maven-model-builder:3.8.6:provided
org.apache.maven:maven-settings:3.8.6:provided

Plexus相关依赖

org.codehaus.plexus:plexus-utils:4.3.0:compile
org.codehaus.plexus:plexus-xml:3.2.1:compile
org.codehaus.plexus:plexus-classworlds:2.6.0:provided

Eclipse Sisu依赖

升级到稳定版,避免使用里程碑版本:

org.eclipse.sisu:org.eclipse.sisu.plexus:0.9.0.RELEASE:provided

插件配置调整

  • maven-plugin-plugin 升级到支持Java 17的版本:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-plugin-plugin</artifactId>
    <version>3.10.1</version>
    <configuration>
        <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
    </configuration>
    <executions>
        <execution>
            <id>descriptor-help</id>
            <goals>
                <goal>helpmojo</goal>
            </goals>
        </execution>
    </executions>
</plugin>
  • sisu-maven-plugin 指定兼容版本:
<plugin>
    <groupId>org.eclipse.sisu</groupId>
    <artifactId>sisu-maven-plugin</artifactId>
    <version>0.9.0.RELEASE</version>
</plugin>

3. 额外注意事项

  • Java 17的反射权限限制:若组件涉及反射操作,需在module-info.java中声明权限,或添加JVM启动参数--add-opens java.base/java.lang=ALL-UNNAMED兼容旧代码。
  • 确保所有依赖统一升级到兼容Java 17的版本,避免混合新旧版本引发冲突。

内容的提问来源于stack exchange,提问作者Nikolas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:12:05