NetBeans中新建Maven Web项目无法运行问题求助
解决方案
1. 升级Maven War插件版本
你的maven-war-plugin:2.3版本过于老旧,完全不兼容JDK9+引入的模块系统,这是导致报错的核心原因之一。直接在项目pom.xml中替换为最新稳定版插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.4.0</version> <!-- 可替换为Maven仓库中的最新稳定版本 --> </plugin> </plugins> </build>
2. 添加JDK模块访问权限参数
JDK22的模块化机制限制了内部API的访问,你需要显式开放java.base/java.util包给未命名模块:
- 编译阶段:在
pom.xml中配置maven-compiler-plugin添加编译参数(注意Jakarta EE 8要求源码级别为JDK8,保持source和target为8):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>8</source> <target>8</target> <compilerArgs> <arg>--add-opens=java.base/java.util=ALL-UNNAMED</arg> </compilerArgs> </configuration> </plugin>
- 运行阶段:在NetBeans的Tomcat运行配置中,添加VM参数:
--add-opens=java.base/java.util=ALL-UNNAMED
3. 解决Tomcat与JDK的兼容性问题
Tomcat 9官方仅支持JDK 8至JDK 17,JDK 22不在其兼容范围内,后续可能出现更多隐性问题。建议二选一:
- 降级JDK至17(LTS版本,稳定且完全适配Tomcat 9);
- 升级Tomcat至10.1.x版本(支持Jakarta EE 8,且兼容JDK 11+)。
4. 校验Maven JDK配置
确保NetBeans中Maven使用的JDK版本与项目一致,或在Maven的settings.xml中添加配置强制JDK编译级别:
<profile> <id>jdk-compat</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <maven.compiler.release>8</maven.compiler.release> </properties> </profile>
内容的提问来源于stack exchange,提问作者Christian Harris
相关产品推荐
相关产品推荐

