getResourceAsStream不会开发任何Stream



试图制作一个包含资源的可执行.jar。快速问题:为什么我会得到这个代码的NullPointerException?

    String filename = "/settings.xml"
    try (InputStream is = this.getClass().getResourceAsStream(filename);
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));)
    {
        settingArray = (boolean[]) xStream.fromXML(reader);
    }

我使用Eclipse,文件settings.xml在我的项目的根目录中。以下代码工作得很好,但导出到jar后就不行了:

    try (final BufferedReader reader = new BufferedReader(new FileReader(filename)))
    {
        settingArray = (boolean[]) xStream.fromXML(reader);
    }

要使用this.getClass().getResourceAsStream("/settings.xml")加载,文件不能位于项目的根目录下。在运行时,Java不知道也不关心包含应用程序源的eclipse项目。

它关心的是运行时类路径。该文件必须位于类路径的根目录下。要在那里,文件应该是

  • 如果您从jar执行应用程序,则在jar文件的根目录
  • 如果您从IDE执行应用程序,则位于bin(或类,或您选择命名eclipse存储编译的.class文件的目录的名称)目录的根目录。要做到这一点,最简单的方法是将文件放在默认包中的源目录的根目录下。Eclipse将通过复制这个源文件将其"编译"到bin目录中

相关内容

  • 没有找到相关文章

最新更新