我有一个 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");
最佳答案
您不应在文件路径字符串中引用资源文件夹。但是,您的资源文件夹需要是 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/