我必须通过shell脚本(mainUTL.sh)执行java实用程序(UTL.jar)。它使用属性文件(SetupUTL.properties)。
文件的位置如下 - /a/b/mainUTL.sh /a/b/UTL.jar /a/b/SetupUTL.properties
我在mainUTL.sh -
中设置了我的CLASSPATHexport 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代码,所以请告诉我我在做什么错误,因为无法正常执行该实用程序。
答案 0 :(得分:0)
您不应该使用ClassLoader.getSystemResourceAsStream
试试这个
this.getClass().getClassLoader().getResourceAsStream("your_prop_file")
如果失败,请尝试添加“/”:
this.getClass().getClassLoader().getResourceAsStream("/your_prop_file")