java如何使用类、类加载器和URL获取资源
我正在编写一个简单的JSF应用程序,并试图使用Class
、ClassLoader
和URL
获取一个不起作用的资源(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());
# 1 楼答案
谢谢你的评论Sandeep,这很有帮助。我发现我的属性文件放错了地方。然后,我将它移动到java资源文件夹下的src文件夹中,现在我的属性文件被加载。我现在有一个新问题,但如果我不能解决它,我将开始一个新的线程
# 2 楼答案
一旦你有了一个URL,你就可以使用
url.openStream()
从它那里得到一个InputStream
,或者你可以简单地首先使用cLoader.getResourceAsStream(...)
。你目前的做法将在某些平台(但不是所有平台)上工作,并且仅当应用程序从磁盘上的目录运行时。如果将类和资源打包到JAR中,它将失败,但是如果使用
getResourceAsStream
,它将在JAR和未打包的目录中工作