java - 在 Eclipse 中使用 InputStream in = getClass().getResourceAsStream ("resources/template.properties") 找不到资源文件夹;

标签 java

我有一个 awt 应用程序,它将使用可执行 JAR 文件运行。我在获取资源文件夹时遇到的几个问题

<强>1。在 Eclipse 中,如果我使用以下代码

    properties = new Properties();
    InputStream in =getClass().getResourceAsStream("resources/template.properties"); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));

然后我就得到了

 ERROR   2019-11-11 12:03:44,052 [AWT-EventQueue-0] 
 java.lang.NullPointerException   

如果我在 Eclipse 中使用上述代码,并且当我导出可运行 Jar 时,它在 JAR 文件中工作,但是当我在 Eclipse 中运行时,它会抛出空指针异常。

情况 2:但是,如果我使用下面的代码并导出 JAR 文件,那么即使资源文件夹存在,JAR 文件也会抛出错误,因为“当前目录中的资源不可用”。

properties = new Properties();
InputStream in = 
inputStream = new FileInputStream("resources/template.properties");

文件夹结构 enter image description here

最佳答案

您不应在文件路径字符串中引用资源文件夹。但是,您的资源文件夹需要是 Eclipse 的源文件夹。

我还不知道你的项目结构,但我建议你在项目根目录中创建一个资源文件夹,然后右键单击它并转到构建路径>用作源文件夹

之后,该文件夹中的所有文件都将由 getResourceAsStream 方法直接访问,并且也会放置在 JAR 根目录中,与其他源文件夹中的所有其他文件合并。 p>

然后你可以这样做:

InputStream inputStream = getClass().getClassLoader().getResourceAsStream("template.properties");

这种方式应该在 Eclipse 和独立 JAR 中都有效。

PS:我强烈建议您开始使用 Maven 项目并遵循其文件夹结构。

关于java - 在 Eclipse 中使用 InputStream in = getClass().getResourceAsStream ("resources/template.properties") 找不到资源文件夹;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58806390/

相关文章:

java - RestEasy 文件上传 - 如何正确确定文件名编码?

java - android媒体播放器流超过1个URL

java - 使用 Java Spring 通过 SSH 执行命令

java - 如何使用 OAuth 2.0 访问 Google 日历(服务模型)?

java - 在 java 中使用属性文件 *AS* static final 变量中的属性

java - keytool md5 哈希 ascii?

java - 在 Selenium 中定位脚本

java - 获取RadioButton的值

Java:ArrayList 对象的归并排序

java - 什么是NullPointerException,我该如何解决?