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

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


当前回答

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

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

其他回答

来自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

我在一个文件夹里有多个罐子。下面的命令在JDK1.8中对我有用,可以包括文件夹中的所有jar。请注意,如果在类路径中有空格,请在引号中包含

窗户

“C:\My Jars\sdk\lib\*

运行:java -classpath "C:\My Jars\sdk\lib\*; C:\ programs" MyProgram

Linux

编译:javac -classpath "/home/guestuser/My Jars/sdk/lib/*" MyProgram.java

运行:java -classpath "/home/guestuser/My Jars/sdk/lib/*:/home/guestuser/programs" MyProgram

这不是一个能够将/*设置为-cp的直接解决方案,但我希望您可以使用下面的脚本来缓解动态类路径和lib目录的情况。

 libDir2Scan4jars="../test";cp=""; for j in `ls ${libDir2Scan4jars}/*.jar`; do if [ "$j" != "" ]; then cp=$cp:$j; fi; done; echo $cp| cut -c2-${#cp} > .tmpCP.tmp; export tmpCLASSPATH=`cat .tmpCP.tmp`; if [ "$tmpCLASSPATH" != "" ]; then echo .; echo "classpath set, you can now use  ~>         java -cp \$tmpCLASSPATH"; echo .; else echo .; echo "Error please check libDir2Scan4jars path"; echo .; fi; 

为Linux编写脚本,也可以为windows编写类似的脚本。如果提供了正确的目录作为"libDir2Scan4jars"的输入;脚本将扫描所有的jar并创建一个类路径字符串,并将其导出到一个env变量“tmpCLASSPATH”。

把jar文件看作目录结构的根。是的,您需要分别添加它们。

以适合多个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