Java实用程序无法查找和读取其属性文件

时间:2013-10-22 19:22:45

标签: classpath classloader properties-file

我必须通过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

我正在从命令提示符(Login 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$: 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代码,所以请告诉我我在做什么错误,因为无法正常执行该实用程序。

1 个答案:

答案 0 :(得分:0)

您不应该使用ClassLoader.getSystemResourceAsStream

试试这个

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

如果失败,请尝试添加“/”:

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