java启动时的classpass及扩展类目录
CLASSPATH方式
通过CLASSPATH将需引用的外部jar文件传给java进行装载。
- 通过命令行参数添加classpath
此方式当lib下有很多jar文件时,命令行参数会很长,甚至超过命令行字数限制而启动失败。
... # Set CLASSPATH [ -z "$CLASSPATH" ] && CLASSPATH=$MY_HOME for f in $MY_HOME/lib/*.jar; do echo "$CLASSPATH"|grep "$f" > /dev/null 2>&1 || CLASSPATH=${CLASSPATH}:$f; done nohup $JAVA $JAVA_OPTS -classpath $CLASSPATH com.serverbootstrap.Main >> "$LOGFILE" 2>&1 & echo $! > "$PIDFILE" ...
- 通过环境添加classpath
... # Set CLASSPATH [ -z "$CLASSPATH" ] && CLASSPATH=$MY_HOME for f in $MY_HOME/lib/*.jar; do echo "$CLASSPATH"|grep "$f" > /dev/null 2>&1 || CLASSPATH=${CLASSPATH}:$f; done export CLASSPATH # 将CLASSPATH放到env中 # 也可以用下面的语句代替 #export CLASSPATH=$CLASSPATH:$MY_HOME/lib/*.jar nohup $JAVA $JAVA_OPTS com.serverbootstrap.Main >> "$LOGFILE" 2>&1 & echo $! > "$PIDFILE" ...
Djava.ext.dirs方式
将需引用的jar文件都放到指的几个目录中,并在启动命令行参数中添加对应目录参数,使启动参数更为简捷。
... # Djava.ext.dirs中加上lib目录 JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=$JAVA_HOME/jre/lib/ext:$MY_HOME/lib" ... # Set CLASSPATH时不用再加入所有lib的jar文件 [ -z "$CLASSPATH" ] && CLASSPATH=$MY_HOME export CLASSPATH nohup $JAVA $JAVA_OPTS com.serverbootstrap.Main >> "$LOGFILE" 2>&1 & echo $! > "$PIDFILE" ...