我将在第5版(Tikanga)下启动一个java程序。
目录结构:
命令来运行java程序(运行得很好):
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:../conf/log4j sc.properties -jar sc.jar -config ../conf/sc.properties如果我把它放到shell脚本中,java程序就找不到这个支持文件了。shell脚本(start-sc.sh)如下所示:
#!/bin/sh
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:../conf/log4j-sc.properties -jar sc.jar -config ../conf/sc.properties我是一个壳牌脚本新手,有什么想法,我错过了什么?太棒了!
发布于 2012-11-30 10:08:42
听起来不错,这个版本有用吗?
#!/bin/sh
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:$(pwd)/../conf/log4j-sc.properties -jar sc.jar -config $(pwd)/../conf/sc.properties编辑#1:
在启动程序之前尝试放置以下内容:
echo `pwd`输出告诉您在哪里运行脚本,因此可以检查它是否是正确的路径。
编辑2:
试试这个脚本
#!/bin/bash
LOG4JCONF="/absolute/path/to/the/log4j/conf/file"
SCCONF="/absolute/path/to/the/other/conf/file"
/usr/java/jdk1.6.0_37/bin/java -Xmx1024M -Dlog4j.configuration=file:$LOG4JCONF -jar sc.jar -config $SCCONF发布于 2012-11-30 10:16:55
我猜您启动了shell脚本,而不是从dir start-sc.sh所属的bin目录启动的。
为了解释清楚,让我们举个例子。
比如说,你的剧本在这里:
/foo/bar/bin/start-sc.sh如果您在/foo/bar/bin/下启动它,它(相对路径)应该可以工作。
但是,如果从/home/yourHome/someDir/启动脚本,则相对路径将指向$PWD/../,即/home/yourHome/
在启动java应用程序之前,您可以先在脚本中使用cd /foo/bar/bin/。或者做这样的事情:
a=`dirname $0`
if [ $a = '.' ];then
a=`pwd`
fi
cd $a
/usr/java/jdkxxxx/java .....https://stackoverflow.com/questions/13642962
复制相似问题