java - 从命令行运行 JAR 文件并指定类路径

标签 java shell command-line classpath

我编译了一个JAR文件并在 list 中指定主类(我使用了 Eclipse Export 函数)。我的依赖项都位于标有 lib 的目录中。我似乎无法得到关于如何执行 JAR 文件的直接答案,同时指定它应该使用 lib/* 作为类路径。

我已经尝试过:

]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main

等等...

每个都会给出一个错误:

Error: Could not find or load main class ....

或给出 NoClassDefFoundError 指示未找到库。

我什至尝试重新制作 JAR 文件并包含 lib 目录和内容,但仍然没有骰子...

如何从命令行执行 JAR 文件并指定要使用的类路径?

最佳答案

当您指定-jar 时,-cp 参数将被忽略。

来自the documentation :

When you use this option, the JAR file is the source of all user classes, and other user class path settings are ignored.

您也不能将所需的 jar 文件“包含”到另一个 jar 文件中(您需要提取它们的内容并将 .class 文件放入您的 jar 文件中)

您有两个选择:

  1. lib 目录中的所有 jar 文件包含到 list 中(您可以在其中使用相对路径)
  2. 使用 -cp 在命令行上指定所有内容(包括您的 jar):
    java -cp MyJar.jar:lib/* com.somepackage.subpackage.Main

关于java - 从命令行运行 JAR 文件并指定类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820444/

相关文章:

java - 我怎样才能 "retry" try catch ?

java - 不可见的 java 字节码行

java - 使用 Spring Boot 创建自定义附加程序以将日志消息输出到文本区域

java - 我们如何在 Android 应用程序中创建 Kafka 生产者?

linux - 在终端中自定义多个选项卡

regex - 如何将字符串的一部分与 bash 中的正则表达式匹配?

shell - Ctrl+Backspace 的终端键代码是什么

xml - 命令行使用内联定义的值修改 xml 属性

java - 如何使用验证从命令行运行 cucumber junit 项目

windows - 使用 Windows 批处理命令追加到文件时,如何在文件中的下一个单词之后立即追加?