簡體   English   中英

如何使用Class,ClassLoader和URL獲取資源

[英]How do I get a resource using Class, ClassLoader, and URL

我正在編寫一個簡單的JSF應用程序,並嘗試使用ClassClassLoader和不起作用的URL獲取資源(database.properties文件)。 url為null,我不知道為什么。 我做了很多研究,但沒有成功。

碼:

Class cls = Class.forName("<packagename>.SimpleDataSource");
ClassLoader cLoader = cls.getClassLoader();
URL url = cLoader.getResource(fileName); // fileName = "database.properties"  w/o the double quote
FileInputStream in = new FileInputStream(url.getFile()); 

感謝您的評論Sandeep,它很有幫助。 我發現我的屬性文件放在錯誤的位置。 然后,我將其移至java resources文件夾下的src文件夾內,現在我的屬性文件已加載。我現在遇到一個新問題,但是如果我不知道會啟動一個新線程。

一旦有了URL,就可以使用url.openStream()從中獲取InputStream ,或者首先可以簡單地使用cLoader.getResourceAsStream(...) 您目前的做法

FileInputStream in = new FileInputStream(url.getFile());

僅在您的應用程序從磁盤上的目錄運行時才能在某些平台上運行,但不能在所有平台上運行。 如果將您的類和資源打包到一個JAR中,它將失敗,但是如果您使用getResourceAsStream ,它將在JAR和解壓縮的目錄中工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM