安装ldapuserimport-api时遇spoon-maven-plugin的opens java.net错误
解决Spoon Maven插件3.5版本的
InaccessibleObjectException构建错误 问题原因
你遇到的错误是因为Spoon 3.5版本使用反射调用URLClassLoader.addURL方法,但Java模块化系统(Java 9及以上)默认限制了这种跨模块的反射访问,导致抛出InaccessibleObjectException。之前尝试的--add-opens参数无效,是因为没有用对Spoon插件的参数传递方式。
有效解决方法
方法1:给Spoon插件配置JVM开放参数
直接在POM的Spoon插件配置中添加jvmArguments参数,指定开放模块权限:
<plugin> <groupId>fr.inria.gforge.spoon</groupId> <artifactId>spoon-maven-plugin</artifactId> <version>3.5</version> <configuration> <!-- 开放java.net模块给未命名模块 --> <jvmArguments>--add-opens java.base/java.net=ALL-UNNAMED</jvmArguments> <!-- 保留原有的其他配置项 --> </configuration> </plugin>
修改后重新执行构建命令即可。
方法2:升级Spoon插件版本(推荐)
Spoon 3.5是较旧版本,后续版本已经适配Java模块化规则,无需手动添加参数。将插件版本升级到最新稳定版(比如5.1.0):
<plugin> <groupId>fr.inria.gforge.spoon</groupId> <artifactId>spoon-maven-plugin</artifactId> <!-- 替换为最新稳定版本 --> <version>5.1.0</version> </plugin>
升级后不仅能解决当前错误,还能获得插件新特性与bug修复。
方法3:临时跳过Spoon代码检查(应急方案)
如果想优先完成构建、后续再处理代码检查,可以执行命令时跳过Spoon的check目标:
mvn install clean -U -DskipSpoonCheck
验证
修改配置或命令后,重新运行mvn install clean -U,确认构建成功。
内容的提问来源于stack exchange,提问作者eli44
相关产品推荐
相关产品推荐

