java命令cp参数

cp参数就是classpath

java -cp ".;dir/;dir/a.jar;dir/b.jar" Main

从java1.6开始,cp参数支持通配符匹配jar文件。需要注意两点:

  1. 用引号"
  2. *,而不是*.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 ' ' ':')

其中先执行$()括号中的命令echo lib/*.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不支持通配符。

猜你喜欢

转载自blog.csdn.net/xuejianbest/article/details/84823073