如何使用Class,ClassLoader和URL获取资源

时间:2014-03-17 04:42:28

标签: java class jsf classloader getresource

我正在编写一个简单的JSF应用程序,并尝试使用不起作用的ClassClassLoaderURL来获取资源(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()); 

2 个答案:

答案 0 :(得分:0)

感谢您对Sandeep的评论,这很有帮助。我发现我的属性文件位于错误的位置。然后我将它移到我的src文件夹下的java资源文件夹下,现在我的属性文件被加载了。我现在有一个新问题,但是如果我想不通就会启动一个新线程。

答案 1 :(得分:0)

获得网址后,您可以使用InputStream从中获取url.openStream(),或者您可以首先使用cLoader.getResourceAsStream(...)

目前的做法
FileInputStream in = new FileInputStream(url.getFile());

可以在某些平台上运行,但不是全部,只有当您的应用程序从磁盘上的目录运行时才会运行。如果您的类和资源被打包到JAR中,它将失败,但如果您使用getResourceAsStream,它将从JAR和解压缩的目录中运行。