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

Maven profile下plexus-compiler-eclipse插件JAXB依赖缺失问题问询

Java 11环境下Eclipse编译器JAXB缺失问题解决方案

问题根因

你遇到的问题核心是依赖放置位置错误,maven-compiler-plugin的<dependencies>节点下的依赖仅作用于插件本身的运行时环境,不会被加入项目的编译类路径,因此ecj编译时无法读取到你添加的JAXB依赖。

修复步骤

  • 第一步:将JAXB依赖移动到profile级别的<dependencies>节点下,不要放在插件的依赖配置中。如果你的项目仍使用javax命名空间,选择javax.xml.bind相关依赖;如果已迁移到jakarta命名空间,选择jakarta.xml.bind相关依赖,禁止同时引入两组避免类冲突。
  • 第二步:升级ecj及plexus-compiler-eclipse的版本,你当前使用的3.25.0版本ecj对Java 11的兼容存在已知缺陷,建议升级ecj到3.33.0及以上版本,plexus-compiler-eclipse升级到2.12.1及以上版本。
  • 第三步:检查项目中.settings/org.eclipse.jdt.core.prefs配置文件,确保其中的编译源版本、目标版本和项目的Java 11版本一致,没有禁用类路径自动扫描的相关配置。
  • 第四步:如果编译时仍报错,可在maven-compiler-plugin的配置中添加<fork>true</fork>,配合类路径参数调试确认依赖加载状态。

修复后Profile示例

<profile>
    <id>eclipse-compile</id>
    <activation>
        <activeByDefault>false</activeByDefault>
    </activation>
    <!-- JAXB依赖放在profile级别的dependencies下 -->
    <dependencies>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
            <scope>provided</scope> <!-- 可根据你的项目实际需要调整scope -->
        </dependency>
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <compilerId>eclipse</compilerId>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <compilerArguments>
                            <properties>${project.basedir}/.settings/org.eclipse.jdt.core.prefs</properties>
                        </compilerArguments>
                    </configuration>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.plexus</groupId>
                            <artifactId>plexus-compiler-eclipse</artifactId>
                            <version>2.12.1</version>
                        </dependency>
                        <dependency>
                            <groupId>org.eclipse.jdt</groupId>
                            <artifactId>ecj</artifactId>
                            <version>3.33.0</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</profile>

注意事项

  • 多模块项目需要确保该profile的依赖配置可以被子模块继承,或者在子模块中单独声明对应JAXB依赖。
  • 编译时可添加-X参数打印详细类路径信息,确认JAXB依赖已被正确加入ecj的编译类路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:27:05