为什么 linux 命令行上的 java 找不到特定的 Java 库

Why is specific Java library not being found by java on linux command line

这应该是直截了当的,但我不明白为什么 commons-logging-1.2.jar 在明显成功的编译后没有找到。但我不确定为什么 commons-logging-1.2.jar 库在 运行 这样的时候没有被 java 找到。

$ javac -classpath commons-logging-1.2:pdfbox-2.0.24.jar:xmpbox-2.0.24.jar org/example/app/App.java
$ jar cfm app.jar MANIFEST.MF ./org/example/app/App.class
$ java -cp ./* -jar app.jar
Error: Could not find or load main class ..commons-logging-1.2.jar
Caused by: java.lang.ClassNotFoundException: //commons-logging-1/2/jar

我也试过 运行ning 作为:

$ java -cp ./* org.example.app.App
Error: Could not find or load main class ..commons-logging-1.2.jar
Caused by: java.lang.ClassNotFoundException: //commons-logging-1/2/jar

我打算最终使用 Maven,但现在我只想能够手动理解该过程。我能够使用相同的设置 (folders/tools/etc) 在 Windows 上编译和 运行。不确定我在这里遗漏了什么。

所有 java 命令都是 运行 来自 org/example/app 所在的目录。并且 jar 文件位于同一目录中。所以我在目录 A 中拥有所有罐子(包括创建时的 app.jar),在目录 A 下是创建 org/example/app/App.class 的地方。

我特意做了一个增量构建,首先,pdfbox 只包含在内,并收到 xmpbox classes 丢失的相应错误。然后我添加了 xmpbox。然而,当我没有在 class 路径中添加 commons-logging-1.2.jar 时,没有报告任何错误。

非常感谢任何帮助。谢谢!

以下内容,用户 chrylis -cautiouslyoptimistic 的评论解决了问题。

"Try putting an echo in front of that command and see what it expands to."

在尝试了该建议后,结果表明是扩展导致了问题。在 Windows 下我没有使用扩展,但在 linux 下,当查看扩展时它显示文件名之间有空格而不是 -cp 语法要求的“:”。