无法使用相对路径将文件从 jar 读取到 FileInputStream

Unable to read a file from a jar into a FileInputStream using a relative path

鉴于我能够加载我的 mail.properties 文件,例如:

ResourceBundle rb = ResourceBundle.getBundle("META-INF.mail");
System.out.prinltn("subject :" + rb.getString("email.subject")); //output : 'subject : Job Application'

但是我无法阅读;用同样的方法;我的 mail.properties 文件为 FileInputStream。我已经尝试了所有这些选项 none,但我总是得到 FileNotFoundException :

FileInputStream fis = new FileInputStream("META-INF/mail.properties");
FileInputStream fis = new FileInputStream("META-INF//mail.properties");
FileInputStream fis = new FileInputStream("META-INF\mail.properties");

文件夹 META-INF 存在于构建时加载的 jar 中:

我们将不胜感激任何帮助。

问题是 FileInputStream() 将查找相对于当前目录的路径。由于您的 META-INF 在导入的 jar 中,因此无法找到它。

根据this post,您有以下选择:

  1. 指定一个绝对文件名
  2. 指定一个相对文件名,该文件名会考虑到您所在的位置 运行 此
  3. 将文件捆绑为资源并使用Class.getResourceAsStream或类似的

查看更多详细信息。 我的问题是,如果您能够使用 ResourceBundle 加载它,您为什么要尝试以不同的方式重新加载它?