java -cp .;c:\dir1\lib.jar Test
-cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”
分隔,linux上是分号“:”分隔。不支持通配符,需要列出所有jar包,用一点“.”代表当前路径。
虽然现在都有eclipse之类的IDE了,但有时候后会手工编译和运行一些程序,很多人包括多年开发经验的人都不知道怎么在命令行参
数运行类。有点杯具……
使用范例:
java -cp …\lib\hsqldb.jar org.hsqldb.Server -database mydb
或
java -cp …/lib/hsqldb.jar org.hsqldb.Server -database.0 mydb -dbname.0 mydb
1 Java代码
2 java -jar minusyhd.jar
3 Manifest-Version: 1.0
4 Main-Class: minusyhd.MinusYHD
5 Class-Path: jconn4.jar
-cp 参数后面是类路径,是指定给解释器到哪里找到你的.class文件,
写法:
java -cp .;myClass.jar packname.mainclassname
classpath中的jar文件能使用通配符,如果是多个jar文件,要一个一个地罗列出来,从某种意义上说jar文件也就是路径。
要指定各个JAR文件具体的存放路径,相同路径有多个可使用通配符
java -cp .;c:\classes\myClass.jar;d:\classes\*.jar packname.mainclassname
bat文件写法:
Java代码
java -cp MinusYHD.jar minusyhd.MinusYHD > minusyhed.log
exit
”> minusyhed.log“ 指定System.out输出文件名
cp参数就是classpath
java -cp ".;dir/;dir/a.jar;dir/b.jar" Main
从java1.6开始,cp参数支持通配符匹配jar文件。需要注意两点:
用引号"
用*,而不是*.jar
Windows:
java -cp “Test.jar;lib/*” my.package.MainClass
Linux:
java -cp “Test.jar:lib/*” my.package.MainClass
若不支持通配符,bash shell支持用以下方式:
java -cp $(echo lib/*.jar | tr ’ ’ ‘:’)
其中先执行KaTeX parse error: Double superscript at position 31: …b/*.jar | tr ' '̲ ':',然后把(echo lib/*.jar | tr ’ ’ ‘:’)部分替换为命令返回的字符串,再执行替换后的java命令。
tr ’ ’ ':'会把空格替换为:
注意:
-cp "foo/"只表示foo目录下的jar,不包括foo下的class,若要包括则用-cp "foo;foo/"或-cp “foo/*;foo”,这里的顺序会决定是先加载jar还是class。
foo/*不会递归加载foo下子目录的jar。
foo/*加载foo目录下的jar顺序不是固定的,所以程序不应该依赖固定的顺序。若需要依赖则用枚举方式而不是通配符方式添加。
manifest.mf中的Class-Path不支持通配符。