2014-03-27 27 views
1

我想從Java訪問屬性文件,它運行文件,當我作爲一個獨立的Java應用程序運行它。但是,當我調用從運行在tomcat服務器上的jsp頁面訪問文件的方法時,我得到一個FileNotFoundException。FileNotFoundException當從JSP訪問文件,但從普通的Java應用程序訪問時工作

我認爲,當文件被部署到服務器中時,它們的路徑會發生變化,這就是爲什麼異常發生在web應用程序中,而不是直接在java中發生。以下是我的項目的項目資源管理器視圖。

enter image description here

我訪問nWMS性質從LabelRequestMessages類文件在Java。下面是我用java訪問文件的代碼。

in = new FileInputStream("resources-dev/com/infosys/gidl2/shiplabel/mybatis/config/" 
          + propsDB); //propsDB has the file name 
      props.load(in); 

有人可以告訴我如何提供路徑,以便部署在tomcat服務器時可以訪問該文件。

回答

1

你試圖讓你的.war應用程序中的資源,請考慮使用

private static final String ENDINGS_FILE_NAME = "com/infosys/gidl2/shiplabel/mybatis/config/" + propsDB; 
... 
InputStream is = getClass().getResourceAsStream(ENDINGS_FILE_NAME); 

但是首先記得設置資源文件夾中web.xml,因爲Tomcat的需要知道在哪裏搜索。

+0

你能不能也請告訴我如何設置資源'web.xml'。對不起,這是我的第一個網絡應用程序,我有點困惑。 – anirudh

+0

我犯了一個錯誤,關於你的問題的配置,你不需要這個配置。請檢查天氣我的方法適合你,並給我反饋。 – RMachnik

1

您需要改爲從類路徑引用文件。嘗試

in = this.getClass().getClassLoader().getResourceAsStream("om/infosys/gidl2/shiplabel/mybatis/config/nWMS_database.properties"); 

確保resource-dev目錄被認爲是源目錄,以便它被包含在war文件的WEB-INF/classes中。

+0

我嘗試了這一點,但由於我使用的是mybatis,我還定義了要在mybatis的配置文件中使用的屬性,並且在您說的更改之後,mybatis無法識別屬性文件。 – anirudh

1

嘗試將其更改爲

new FileInputStream("com.infosys.gidl2.shiplabel.mybatis.config."+ propsDB); 
+0

這從獨立的Java應用程序,但仍然無法從Web應用程序工作 – anirudh

相關問題