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

Maven识别依赖允许导入但无法实例化对象的问题排查

解决Maven项目命令行运行时找不到Jsoup依赖的问题

问题原因

你通过mvn package生成的Foo-1.0-SNAPSHOT.jar仅包含项目自身代码,不包含Jsoup等第三方依赖包。Eclipse在运行时会自动将Maven管理的依赖jar加入类路径,因此能正常执行;但命令行直接指定该jar时,类路径中缺少Jsoup的jar文件,导致JVM无法找到对应的类,抛出NoClassDefFoundError。

解决方案

方法1:用Maven Exec插件直接运行(最简便)

无需手动处理类路径,直接通过Maven插件运行主类:

mvn exec:java -Dexec.mainClass="com.example.App"

方法2:打包包含所有依赖的可执行Jar(适合分发)

在项目的pom.xml中添加maven-assembly-plugin配置,让Maven打包时将所有依赖合并到一个jar中:

<build>
  <plugins>
    <plugin>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>3.6.0</version>
      <configuration>
        <!-- 指定打包包含所有依赖 -->
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <!-- 配置主类,方便直接用java -jar运行 -->
        <archive>
          <manifest>
            <mainClass>com.example.App</mainClass>
          </manifest>
        </archive>
      </configuration>
      <executions>
        <execution>
          <id>make-assembly</id>
          <!-- 绑定到package阶段,执行mvn package时自动生成合并jar -->
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

添加配置后,重新执行打包命令:

mvn package

打包完成后,target目录会生成Foo-1.0-SNAPSHOT-jar-with-dependencies.jar,直接运行该jar即可:

java -jar target\Foo-1.0-SNAPSHOT-jar-with-dependencies.jar

方法3:手动将依赖加入类路径(不推荐,仅作参考)

找到Maven本地仓库中Jsoup的jar文件(默认路径为C:\Users\brand\.m2\repository\org\jsoup\jsoup\1.15.3\jsoup-1.15.3.jar),在运行时将其加入类路径:

java -cp "target\Foo-1.0-SNAPSHOT.jar;C:\Users\brand\.m2\repository\org\jsoup\jsoup\1.15.3\jsoup-1.15.3.jar" com.example.App

注意:Windows系统下类路径用分号;分隔,Linux/macOS系统用冒号:分隔。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:24:46