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



我正在编写一个简单的JSF应用程序,并试图使用ClassClassLoaderURL获取一个不起作用的资源(database.properties文件(。url为空,我不知道为什么。我做了很多研究,但没有成功。

代码:

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资源文件夹下的src文件夹中,现在我的属性文件被加载了。我现在有一个新问题,但如果我不能解决,我会启动一个新线程。

一旦有了URL,就可以使用url.openStream()从中获取InputStream,也可以首先简单地使用cLoader.getResourceAsStream(...)。您当前的方法

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

将在某些平台上工作,但不是所有平台,并且仅当您的应用程序从磁盘上的目录运行时。如果您的类和资源被打包到一个JAR中,它将失败,但如果您使用getResourceAsStream,它将从一个JAR和一个未打包的目录中工作。

相关内容

  • 没有找到相关文章

最新更新