0

我正在 Red Hat Enterprise Linux Server 第 5 版(Tikanga)下启动一个 java 程序。

目录结构:
- bin ->sc.jar,start-sc.sh,sc-lib-all.jar
- conf->log4j-sc.properties,sc.properties

运行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 程序就再也找不到 prop 文件了。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

我是 shell 脚本的新手,有什么想法吗?谢谢!

4

2 回答 2

0

感觉不错,这个版本好用吗?

#!/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-30T10:08:42.417 回答
0

start-sc.sh我猜你不是从 dir所属的 bin 目录开始你的 shell 脚本。

为了解释清楚,让我们举个例子。

说,你的脚本在这里:

/foo/bar/bin/start-sc.sh

如果你在 /foo/bar/bin/ 下启动它,它(相对路径)应该可以工作。

但如果您从 开始脚本/home/yourHome/someDir/,则相对路径将指向$PWD/../,即/home/yourHome/

cd /foo/bar/bin/在启动 java 应用程序之前,您可以先在脚本中。或执行以下操作:

a=`dirname $0`
if [ $a = '.' ];then
   a=`pwd`
fi
cd $a
/usr/java/jdkxxxx/java .....
于 2012-11-30T10:16:55.153 回答