当前位置: 技术问答>linux和unix
如何用shell脚本动态的设置classpath
来源: 互联网 发布时间:2016-08-04
本文导语: 作为初学shell的菜鸟,在这里先感激您能帮我看一下这个问题了呵呵 一 问题描述: 我现在写了一个名字为start.sh 的 shell脚本要启动一个java的class文件 1. start.sh的脚本如下。 PATH=/bin:/sbin:/usr/bin:/user/sbin:/usr/local/bin...
作为初学shell的菜鸟,在这里先感激您能帮我看一下这个问题了呵呵
一 问题描述:
我现在写了一个名字为start.sh 的 shell脚本要启动一个java的class文件
1. start.sh的脚本如下。
PATH=/bin:/sbin:/usr/bin:/user/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
if [ "$JAVA_HOME" != "" ]; then
echo "You JAVA_HOME is: $JAVA_HOME "
else
echo "You JAVA_HOME is not configured, please configure and then execute again!"
exit 1
fi
CLASSPATH=.
echo ${CLASSPATH}
$JAVA_HOME/bin/java -cp ${CLASSPATH} LauncherBootstrap $*
2. 目录结构如下
/home/wgd/testProject/bin
bin目录下存放了start.sh和LauncherBootstrap.class文件
3. 问题现象
如果我在目录bin下执行 ./start.sh结果是正确的。
但是我如果在wgd目录下执行./testProject/bin/start.sh 就会报LauncherBootstrap.class类找不到
如果解决这个类找不到的问题阿?
二 我现在的解决思路
1.通过${PWD}得到当前路径假设叫做path1
2.通过$0得到变量假设叫做path2
3.根据path1 path2切割拼凑出classpath,并设置给CLASSPATH变量。
例如但是我如果在wgd目录下执行./testProject/bin/start.sh 则
path1=/home/wgd
path2=./testProject/bin/start.sh
希望拼凑出/home/wgd/testProject/bin作为classpath
4. 关键是我现在刚解除shell,按照上面的思路实现起来感觉相当困难。
哪位大哥给看看还有别的好方法没有。tomcat里面的startup.sh尽快支持不同目录下启动,可是我实在是看不懂怎么实现的呵呵。
一 问题描述:
我现在写了一个名字为start.sh 的 shell脚本要启动一个java的class文件
1. start.sh的脚本如下。
PATH=/bin:/sbin:/usr/bin:/user/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
if [ "$JAVA_HOME" != "" ]; then
echo "You JAVA_HOME is: $JAVA_HOME "
else
echo "You JAVA_HOME is not configured, please configure and then execute again!"
exit 1
fi
CLASSPATH=.
echo ${CLASSPATH}
$JAVA_HOME/bin/java -cp ${CLASSPATH} LauncherBootstrap $*
2. 目录结构如下
/home/wgd/testProject/bin
bin目录下存放了start.sh和LauncherBootstrap.class文件
3. 问题现象
如果我在目录bin下执行 ./start.sh结果是正确的。
但是我如果在wgd目录下执行./testProject/bin/start.sh 就会报LauncherBootstrap.class类找不到
如果解决这个类找不到的问题阿?
二 我现在的解决思路
1.通过${PWD}得到当前路径假设叫做path1
2.通过$0得到变量假设叫做path2
3.根据path1 path2切割拼凑出classpath,并设置给CLASSPATH变量。
例如但是我如果在wgd目录下执行./testProject/bin/start.sh 则
path1=/home/wgd
path2=./testProject/bin/start.sh
希望拼凑出/home/wgd/testProject/bin作为classpath
4. 关键是我现在刚解除shell,按照上面的思路实现起来感觉相当困难。
哪位大哥给看看还有别的好方法没有。tomcat里面的startup.sh尽快支持不同目录下启动,可是我实在是看不懂怎么实现的呵呵。
|
$JAVA_HOME/bin/java -cp ${CLASSPATH} LauncherBootstrap $*
你看看他的相对路径
LauncherBootstrap.class这个东西在什么地方?
你看看他的相对路径
LauncherBootstrap.class这个东西在什么地方?