2013-10-22 65 views
0

我必須通過shell腳本(mainUTL.sh)執行java實用程序(UTL.jar)。它使用一個屬性文件(SetupUTL.properties)。Java實用程序無法找到並讀取其屬性文件

文件的位置如下 - /a/b/mainUTL.sh /a/b/UTL.jar /a/b/SetupUTL.properties

我有設置我的CLASSPATH在mainUTL.sh以下 -

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> 

現在,當我從位置/一個執行所述外殼腳本/ B /如下

/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的代碼,所以請告訴我,我做錯了什麼,以不能夠執行程序的罰款。

回答

0

你不應該使用ClassLoader.getSystemResourceAsStream

試試這個

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

如果失敗,嘗試添加一個 「/」:

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