【问题标题】:How do I get a resource using Class, ClassLoader, and URL如何使用 Class、ClassLoader 和 URL 获取资源
【发布时间】:2014-04-22 05:32:20
【问题描述】:

我正在编写一个简单的 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()); 

【问题讨论】:

标签: java class jsf classloader getresource


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      相关资源
      最近更新 更多