0

我必须通过 shell 脚本 (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

我正在从命令提示符(登录 shell 是 csh)执行脚本,如下所示 -

sh mainUTL.sh <$ARG1> &

并且脚本 mainUTL.sh 具有以下 java 执行命令 -

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

现在,当我从位置 /a/b/ 执行 shell 脚本时,如下所示

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

该实用程序执行良好。但是当我从任何其他位置执行 shell 脚本时说 /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 回答