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

Maven项目IntelliJ中出现java.lang.NoClassDefFoundError: org/jsoup/Jsoup问题排查

分析java.lang.NoClassDefFoundError: org/jsoup/Jsoup的常见原因

针对你在Maven+JAX-RS项目中遇到的这个错误,即使已经添加了Jsoup依赖和Jar包,通常是以下几个场景导致的,咱们逐个排查:

1. Maven依赖范围配置错误

最常见的问题就是依赖的scope设置不对。比如你可能给Jsoup依赖加了<scope>provided</scope>或者<scope>test</scope>:

<!-- 错误示例:这类scope会导致运行时不包含Jsoup包 -->
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.17.2</version>
    <scope>provided</scope>
</dependency>

provided意味着你假设运行的容器(比如Tomcat、WildFly)已经提供了Jsoup,但实际上这些容器默认不会包含Jsoup,所以运行时就找不到类了。正确的配置应该去掉不必要的scope,让Maven默认把它打包到项目中:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>你的Jsoup版本号</version>
</dependency>

2. Maven依赖未正确同步或本地仓库包损坏

有时候IDE的Maven同步会出问题,或者本地Maven仓库里的Jsoup包损坏了,导致编译时能找到,但运行时找不到。你可以试试:

  • 在IDE中执行mvn clean install命令,强制清理旧构建文件并重新下载依赖
  • 手动检查本地Maven仓库(默认路径是~/.m2/repository/org/jsoup/jsoup),如果对应版本的Jar包不存在或者大小异常,删掉整个jsoup目录后重新执行Maven构建

3. 打包时未包含Jsoup依赖

如果你的JAX-RS项目是打包成WAR包部署的,要确认打包后的WAR包里是否包含Jsoup。可以解压WAR包,查看WEB-INF/lib目录下有没有jsoup-xxx.jar文件:

  • 如果没有,可能是Maven打包插件(比如maven-war-plugin)的配置排除了该依赖,或者你的依赖传递有问题
  • 也可以执行mvn dependency:tree命令,查看Jsoup依赖是否被正确引入,有没有被其他依赖排除

4. 类加载器冲突或容器类加载策略问题

JAX-RS的运行环境(比如Jersey、RESTEasy)或者你部署的应用服务器,类加载器可能没加载到Jsoup的类:

  • 如果你手动把Jsoup Jar放到了容器的全局lib目录(比如Tomcat的lib),可能会和项目内的类加载器产生冲突,建议把Jsoup依赖放在项目自身的WEB-INF/lib下
  • 有些容器的类加载策略会优先加载全局类,导致项目内的Jsoup无法被正确加载,这种情况需要调整容器的类加载配置(比如Tomcat的context.xml里的antiResourceLocking等参数)

5. 手动添加Jar而非Maven管理导致的不一致

如果你是手动添加Jsoup Jar到项目中,而不是通过Maven依赖管理,可能会出现IDE编译时能找到,但打包时没把Jar包含进去的情况。建议尽量通过Maven管理所有依赖,避免手动操作带来的类路径不一致问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:06:41