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

如何运行从Maven下载的带全依赖的Jar包?解决运行报错问题

解决JMRTD Jar运行报错及依赖整合问题

1. 修复"找不到主类"的CMD运行错误

你当前的命令写法有误,Java把jar文件名当成主类名去查找,才会抛出ClassNotFoundException。正确的运行命令必须加上-jar参数:

java -jar jmrtd-0.7.36.jar

注意要确保命令执行目录与jar文件所在目录一致,或者直接指定jar的完整绝对路径。

2. 处理依赖缺失问题

JMRTD jar并非独立可执行包,它依赖BC加密库、SLF4J日志库等第三方组件,直接双击或单独运行会因依赖缺失失败,两种常用解决方式如下:

方式一:手动整理依赖并指定类路径

  • 从Maven仓库下载JMRTD的所有依赖包(可通过Maven Central查询jmrtd的完整依赖列表),将所有依赖jar与jmrtd-0.7.36.jar放在同一文件夹下。
  • 使用-cp(类路径)参数运行,命令格式如下:
java -cp "jmrtd-0.7.36.jar;*.jar" <主类全限定名>

注:Windows系统用;分隔类路径,Linux/macOS用:;主类名可查看jar包内META-INF/MANIFEST.MF文件的Main-Class字段,JMRTD的主类通常为org.jmrtd.app.JMRTDApp

方式二:用Maven打包成包含所有依赖的可执行Jar

如果你的项目基于Maven管理,可在pom.xml中添加插件配置,打包时自动整合所有依赖:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>3.4.1</version>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>shade</goal>
          </goals>
          <configuration>
            <transformers>
              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <mainClass>org.jmrtd.app.JMRTDApp</mainClass>
              </transformer>
            </transformers>
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

执行mvn package后,target目录下会生成带-shaded后缀的jar包,该包包含所有依赖,直接用java -jar命令运行即可,双击也能正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 07:30:02