是否有一种方法将所有jar文件包含在类路径的目录中?

我正在尝试java -classpath lib/*.jar:。program,它不能找到在这些罐子里的类文件。我是否需要将每个jar文件分别添加到类路径中?


当前回答

你可以试试java -Djava.ext.dirs=jarDirectory http://docs.oracle.com/javase/6/docs/technotes/guides/extensions/spec.html

运行java时用于外部jar的目录

其他回答

来自wepapp的类:

  > mvn clean install

  > java -cp "webapp/target/webapp-1.17.0-SNAPSHOT/WEB-INF/lib/tool-jar-1.17.0-SNAPSHOT.jar;webapp/target/webapp-1.17.0-SNAPSHOT/WEB-INF/lib/*" com.xx.xx.util.EncryptorUtils param1 param2

请注意,在Windows上的Java 7中,通配符展开被打破了。

查看这个StackOverflow问题以获得更多信息。

解决方法是在通配符后面加一个分号。Java -cp " where/*;"

以适合多个jar和当前目录的类文件的方式设置类路径。

CLASSPATH=${ORACLE_HOME}/jdbc/lib/ojdbc6.jar:${ORACLE_HOME}/jdbc/lib/ojdbc14.jar:${ORACLE_HOME}/jdbc/lib/nls_charset12.jar; 
CLASSPATH=$CLASSPATH:/export/home/gs806e/tops/jconn2.jar:.;
export CLASSPATH

对于windows,引号是必需的,并且;应作为分离器使用。例如:

java -cp "target\\*;target\\dependency\\*" my.package.Main

在Windows下,这是有效的:

java -cp "Test.jar;lib/*" my.package.MainClass

这是行不通的:

java -cp "Test.jar;lib/*.jar" my.package.MainClass

注意*.jar,因此*通配符应该单独使用。


在Linux操作系统下,如下所示:

java -cp "Test.jar:lib/*" my.package.MainClass

分隔符是冒号而不是分号。