如何 运行 带有外部库的 jar

How to run a jar with external libs

首先,我在 linux 环境中工作。 其次,我有一个 jar 文件,其中包含我项目的所有 classes,包括主文件,位于一个目录中。第三,我在名为 lib 的子目录中获取了项目的所有外部依赖 jar。

问题是我如何运行我的程序? 我试过:

java -classpath ".:/lib/*"  com.pom.ticketprocessing.main.TicketProcessing
java -classpath ".:/lib/*"  tp.com.pom.ticketprocessing.main.TicketProcessing
java -classpath ".:/lib/*"  tp.jar.com.pom.ticketprocessing.main.TicketProcessing
java -classpath ".:/lib/*"  TicketProcessing
java -classpath "tp.jar:/lib/*.jar"  TicketProcessing
java -classpath "./tp.jar:./lib/*.jar"  TicketProcessing

在每种情况下我都会收到错误:错误:无法找到或加载主 class TicketProcessing

那么,我如何运行这个程序呢? 提前致谢。

1) 由于您自己的 jar 不在 lib 目录中,因此您需要将它们都放在类路径中。这就是第 1 - 4 行不正确的原因。都不见了tp.jar.

2) 要引用 jar,类路径应使用不带任何通配符的 jar 名称,或使用一个星号后的目录。这意味着您可以使用 .../lib/abc.jar:.../lib/def.jar.../lib/* ,但以下将被忽略:.../lib/*.jar.

3) 注意/的使用。当路径元素以/开头时,表示文件系统根目录中的路径,而不是当前目录中的路径。

4) . 的用法仅在调用当前目录中的脚本或可执行二进制文件时才重要。但是,当您将路径作为参数提供给 Java 时,就没有必要了。

在您的情况下,您需要执行以下命令:

java -classpath "tp.jar:lib/*" com.pom.ticketprocessing.main.TicketProcessing

或者如果你喜欢圆点:

java -classpath "./tp.jar:./lib/*" com.pom.ticketprocessing.main.TicketProcessing