2017-08-03 77 views
0

我有一個屬性文件,稱那是正確放入的src /主/資源/ app.properties app.properties。無法在類路徑中加載屬性文件; 【JAVA,JBoss的,行家,春]

在它被正確位於\ WEB-INF \類WAR文件。

在我的本地環境(Windows)和Linux測試服務器上的獨立模式獨立模式,WAR文件啓動正確讀我的屬性文件。

在另一個Linux服務器上的Jboss域模式下,使用完全相同的WAR文件,我得到錯誤文件找不到app.properties。它的確在那裏。

除了域模式是在兩個服務器之間的差,第一測試服務器JBoss是下根安裝並運行爲根。另一臺服務器以讀取和執行訪問的用戶身份運行。

我用print語句和im徹底調試了代碼99%確定它不是代碼問題,任何想法在jboss域模式下可能導致無法讀取類路徑上的屬性文件的問題?

在此先感謝。

的代碼

MutablePropertySources sources = new MutablePropertySources(); 
sources.addLast(getEncryptablePropertiesSource(new ClassPathResource("app.properties"))); 

分部方法

private EncryptablePropertiesPropertySource getEncryptablePropertiesSource(Resource propsResource) throws IOException{ 
    //don't use file system resource because property files may be in a jar 
    System.out.println(">>>> in getEncryptablePropertiesSource filename is :"); 
    System.out.println(propsResource.getFilename()); 
    System.out.print(">>>> URL is: ");  
    System.out.println(propsResource.getURL()); 

上次系統絕版語句拋出的第二個測試環境中的錯誤相關部分,不會造成任何其他環境問題。

+0

你是否介意任何代碼?我不確定你是否99%確定它不是代碼問題。 – Maaaatt

+0

確定發佈了它。 – Stefan

回答

0

如果您ClassPathResource距離Spring類:

公共類使用ClassPathResource擴展AbstractFileResolvingResource

類路徑資源的資源實現。使用給定的 ClassLoader或給定的類來加載資源。

如果類路徑資源在文件系統中駐留 ,但不支持JAR中的資源,則將解析支持爲java.io.File。始終支持將 分辨率作爲URL。

因此我不認爲你可以在你的情況下使用它。 您是否嘗試過使用以下方法之一?

+0

我有什麼工作,這裏是打印報表工作2/3的環境,我已經嘗試過。您的建議將採取一個稍微不同的方法,我可能最終會做,但id寧可解決問題的根源 2017-08-03 06:45:27,507信息[標準輸出](MSC服務線程1-3) >>>> getEncryptablePropertiesSource文件名是: 2017-08-03 06:45:27,508 INFO [stdout](MSC service thread 1-3)app.properties 2017-08-03 06:45:27,508 INFO [stdout] (MSC服務線程1-3)>>>> URL是:vfs:/content/mfds.war/WEB-INF/classes/app.properties – Stefan

+0

您的選擇!可能是這種情況,它在2/3的環境中工作時根本不應該工作。如果您繼續使用ClassPathResource,則需要查找env之間的不同之處,以查看是否有解決方案。但是,如果文檔不推薦它,我不會遵循這個路徑。 – Maaaatt

+0

看到最高的upvoted答案,這是我即將做的事情。 https://stackoverflow.com/questions/1771166/access-properties-file-programmatically-with-spring – Stefan

相關問題