0

シェル スクリプト (mainUTL.sh) を介して Java ユーティリティ (UTL.jar) を実行する必要があります。プロパティ ファイル (SetupUTL.properties) を利用します。

ファイルの場所は次のとおりです - /a/b/mainUTL.sh /a/b/UTL.jar /a/b/SetupUTL.properties

mainUTL.sh で次のように CLASSPATH を設定しました -

export CLASSPATH=$CLASSPATH:/a/b/SetupUTL.properties:/a/b/UTL.jar

次のようにコマンドプロンプト(ログインシェルはcsh)からスクリプトを実行しています-

sh mainUTL.sh <$ARG1> &

また、スクリプト mainUTL.sh には次の Java 実行コマンドがあります -

nohup $JAVA_HOME/bin/java -d64 UTL.jar <$ARG1>

次のように、場所 /a/b/ からシェルスクリプトを実行すると

/a/b$: sh mainUTL.sh <$ARG1> &

ユーティリティは正常に実行されています。しかし、他の場所からシェルスクリプトを実行しているときは、次のように /a/ と言います

/a$: sh mainUTL.sh <$ARG1> &

ユーティリティはプロパティ ファイルを見つけることができません。ユーティリティには次のコードがあります -

  private boolean initPropertiesAndLog()
  {
    String str1 = null;
    String str2 = null;

    InputStream localInputStream = ClassLoader.getSystemResourceAsStream("SetupUTL.properties");
    if (localInputStream == null) {
      System.out.println("Unable to read SetupUTL.properties.properties file.");
      return false;
    }

私はJavaコードについてまったく知らないので、ユーティリティを正常に実行できないために何が間違っているのか教えてください。

4

1 に答える 1

0

使用しないでくださいClassLoader.getSystemResourceAsStream

これを試して

this.getClass().getClassLoader().getResourceAsStream("your_prop_file")

失敗した場合は、「/」を追加してみてください。

this.getClass().getClassLoader().getResourceAsStream("/your_prop_file")
于 2013-10-31T11:07:36.770 に答える