我在 pom.xml 中添加了一个指定 mainClass 的部分,并允许它实质上创建一个可执行的 jar。我还包含了一些 Maven 管理的依赖项。它编译,如果我不带任何选项运行程序,它执行得很好,显示使用信息。但是,如果我实际传入参数,它会失败并显示 NoClassDefFoundError: com/sas/isd/midasapi/ParticipantDetailExt,它位于我作为外部 jar 包含的 jar 中。我很困惑它编译并运行以显示使用信息,但是由于 ParticipantDetailExt 是一个导入的类,所以它无法找到该类。不会 它是否确定在编译期间未找到它?如何获取它以便在我运行可执行 jar 时看到带有 ParticipantDetailExt 的 on jar?除了将 jar 添加为外部 jar 之外,我还需要做类路径或 pom 的事情吗?
问问题
189 次
1 回答
1
我假设您正在运行 mvn clean package 或 mvn clean install 来创建您的 jar。默认情况下,由 maven 项目创建的 jar 不包含该 jar 中的依赖项。
选项 1# create a jar-with-dependencies,请参阅:How can I create an executable JAR with dependencies using Maven? .
选项 2# 如果您只是想将依赖项复制到 lib 文件夹,请参阅:http ://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html
于 2012-11-15T15:29:33.037 回答