有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用类、类加载器和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()); 

共 (2) 个答案

  1. # 1 楼答案

    谢谢你的评论Sandeep,这很有帮助。我发现我的属性文件放错了地方。然后,我将它移动到java资源文件夹下的src文件夹中,现在我的属性文件被加载。我现在有一个新问题,但如果我不能解决它,我将开始一个新的线程

  2. # 2 楼答案

    一旦你有了一个URL,你就可以使用url.openStream()从它那里得到一个InputStream,或者你可以简单地首先使用cLoader.getResourceAsStream(...)。你目前的做法

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

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