Java 如何使用外部libs运行jar

Java 如何使用外部libs运行jar,java,jar,execute,lib,Java,Jar,Execute,Lib,首先,我在linux环境中工作。 第二,我有一个jar文件,它在一个目录中包含我的项目的所有类,包括main。第三,我在一个名为lib的子目录中获得了项目的所有外部依赖JAR 问题是我如何运行我的程序? 我试过: java -classpath ".:/lib/*" com.pom.ticketprocessing.main.TicketProcessing java -classpath ".:/lib/*" tp.com.pom.ticketprocessing.main.TicketP

首先,我在linux环境中工作。 第二,我有一个jar文件,它在一个目录中包含我的项目的所有类,包括main。第三,我在一个名为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
在每种情况下,我都会得到一个错误:error:无法找到或加载主类TicketProcessing

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

1)因为您自己的jar不在lib目录中,所以您需要在类路径中同时使用这两个jar。这就是为什么第1-4行是不正确的。它们都缺少tp.jar

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

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

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

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

java -classpath "tp.jar:lib/*" com.pom.ticketprocessing.main.TicketProcessing
或者如果你喜欢圆点:

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

1) 第一行看起来最真实。由于不知道目录结构和名称,很难说得更多。2) 向我们显示“lib”目录的内容和./lib/tp.jar的内容。不确定lib目录的内容为什么重要。lib目录中只有6个以上的jar文件。这些jar是像log4j和数据库访问jar这样的库文件。包含主类和应用程序的jar称为tp.jar,但不在lib目录中。我得到了./deploy/tp.jar和./deploy/lib/*.jar,主类称为TicketProcessing。以上都没有。将
类路径:
条目放入Manifest.MF中,列出所有库,并使用
java-jar
。。。。当然还有一个
Main类:
attribute.mentalurg,非常感谢您的解释和答案。成功了。