如何在Windows命令行中使用外部依赖项执行jar文件?

3
我有一个带有清单文件的jar文件。
    Manifest-Version: 1.0
    Build-Jdk: 1.7.0_67
    Created-By: Apache Maven 3.2.3
    Main-Class: com.company.main.Main
    Archiver-Version: Plexus Archiver

这个jar包具有与外部库的编译依赖关系

compile 'org.apache.commons:commons-lang3:3.3.2'

我想执行我编写的命令行:

java -cp C:\commons-lang3-3.3.2.jar -jar myJar-1.0.0.jar

但是
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
        at ...

如何将此文件添加到类路径中?
PS. 如果我使用“不好的方法”并将 commons-lang3-3.3.2.jar 复制粘贴到 ...jre7\lib\ext 文件夹中,一切都可以正常工作。
2个回答

10

如果您没有使用 -jar 选项,那么您需要指定要运行的主类,因为清单文件不会被查询:

java -cp C:\commons-lang3-3.3.2.jar;.\myJar-1.0.0.jar com.company.main.Main

如果使用 -jar 选项,则会忽略 classpath (-cp) 选项(在这种情况下,清单文件应通过其 classpath 指令引用任何其他所需的 jars)。


夸赞你解释了替代-jar的方法。为了得到这些细节,我看了5-6个类似的问题。 - Timur Sadykov

1
“不好的方法”?你永远不应该将你的jar文件包含在java目录中。当用户使用标准的java时,你如何让他们使用你的jar呢? 你可以使用 @tombola82 建议的命令,或者将 commons-lang jar 文件直接包含在你的项目中,以便您可以引用它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接