DarkMatter in Cyberspace
  • Home
  • Categories
  • Tags
  • Archives

Add Multiple jar Files into Classpath


运行java程序的脚本经常要将conf文件夹和lib文件夹中所有jar包加入到classpath里,送给java命令的-cp参数,当使用JDK6及以上版本时,可以写成:

java -cp lib/*:conf com.boco.nep.Server

其中代表.jar或者*.JAR,参考"http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath";

如果上面的方法无效,也可以采用遍历方法加入jar包:

bash on Unix (start.sh in $APP_HOME/bin folder)

JARS="./conf" for i in ls ./lib/*.jar; do JARS="\(JARS":\)i done exec "${JAVA_HOME}/bin/java" -cp $JARS com.boco.nep.Server

Windows (start.bat in $APP_HOME\bin folder)

@echo off cd ../lib set jars= SETLOCAL ENABLEDELAYEDEXPANSION for /f %%i in ('dir /b *.jar') do set jars=%%i;!jars!

call java -cp %jars% com.boco.nes.mina.Server

注意jar包文件中不能有空格,否则jars中只有空格前的那一部分文件名;

语法解释

"dir /b *.jar"以紧凑格式列出lib文件夹下所有的jar包文件(不包括文件大小、修改时间等信息);

%%i是声明的循环变量(bat脚本中循环变量以%%开头加一个字母组成);

"for /f in (set) do "循环执行set中的每一个元素(详细语法可在命令行中指令"for /?"查看);

"SETLOCAL ENABLEDELAYEDEXPANSION"与"!jars!"配合实现变量jars的延迟赋值,其作用参考批处理中setlocal enabledelayedexpansion的作用详细整理。

Windows版中使用语法的含义可参考Windows bat命令编写大全;for命令的用法;

多层目录遍历

Windows多层目录遍历可以用"for /r"或者"for /f %%i ('dir /ad dir_name') do command",其中"dir /ad"表示只列出目录,参考FOR /D。



Published

Apr 16, 2012

Last Updated

Apr 16, 2012

Category

Tech

Tags

  • bat 3
  • shell 46
  • start script 1
  • Windows 67

Contact

  • Powered by Pelican. Theme: Elegant by Talha Mansoor