有没有一种方法可以在类路径中包含目录内的所有jar文件?
我正在尝试使用java -classpath lib/*.jar:. my.package.Program
,但它无法找到肯定在这些jar文件中的类文件。我需要单独将每个jar文件添加到类路径中吗?
有没有一种方法可以在类路径中包含目录内的所有jar文件?
我正在尝试使用java -classpath lib/*.jar:. my.package.Program
,但它无法找到肯定在这些jar文件中的类文件。我需要单独将每个jar文件添加到类路径中吗?
虽然不能直接将 /* 设置为 -cp,但我希望您可以使用以下脚本来简化动态类路径和库目录的情况。
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包并创建一个classpath字符串,并将其导出到一个环境变量“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
我在一个文件夹中有多个jar包。以下命令适用于JDK1.8
,可包含文件夹中的所有jar包。请注意,如果类路径中有空格,请将其包含在引号中。
Windows
编译:javac -classpath "C:\My Jars\sdk\lib\*" c:\programs\MyProgram.java
运行: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
java
命令的参数顺序也很重要:
c:\projects\CloudMirror>java Javaside -cp "jna-5.6.0.jar;.\"
Error: Unable to initialize main class Javaside
Caused by: java.lang.NoClassDefFoundError: com/sun/jna/Callback
对比
c:\projects\CloudMirror>java -cp "jna-5.6.0.jar;.\" Javaside
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable
jar:
后面的.
是错误的,但是...... 在 Unix 和 Windows 系统中,“当前目录”的标准符号是一个单点 (.)。 - KNUjava -classpath ".;lib/*" Program
。 - Evgeni Sergeev