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

それをシェルスクリプトに入れると、Javaプログラムは小道具ファイルを見つけることができなくなります。シェル スクリプト (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

私はシェルスクリプトの初心者ですが、何が欠けているのでしょうか? どうも!

4

2 に答える 2

0

dirがstart-sc.sh属するbinディレクトリからではなく、シェルスクリプトを開始したと思います。

それを明確に説明するために、例を挙げましょう。

たとえば、スクリプトはここにあります:

/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 に答える
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 に答える