0

我正在尝试使用一个 jar 文件,它本身就是另一个 web 项目中的 web 应用程序。在我使用 eclipse 的导出到 jar 功能创建的 jar 中,我将 owl 文件存储在一个文件夹中。要在 jar 中的代码中使用相对路径,我使用

MyClass.class.getResource("/folderName").getPath(); 

当我部署(glassfish)并将项目用作单独的应用程序时,这可以正常工作。但是当我在另一个项目中使用相同的东西时,我改变了路径,如:

 BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

ArrayList<File> filesFromCommonOntology = new ArrayList<File>();
while(str = br.readLine() != null)
{
  File f = new File(line);
  System.out.println(f);
  filesFromCommonOntology.add(f);
}
for (int i = 0; i < filesFromCommonOntology.size(); i++)
{

file =  filesFromCommonOntology.get(i);
    String filePath = file.getPath();
    Model timeModel = FileManager.get().loadModel(filePath,
ApplicationConstants.N3);
  }

但是当我运行项目时,我得到了行的空指针异常

BufferedReader br = new BufferedReader(new InputStreamReader(MyClass.class.getResourceAsStream("/folderName"), "UTF-8"));

如何解决这个问题?

4

1 回答 1

1

将应用程序打包到 jar 中时,您无法枚举文件夹中的文件。甚至很难想象这是如何工作的:您将文件夹作为输入流打开并以这种方式读取文件名(在该文件夹中)?

最简单的方法是在文件夹中添加一个包含条目的文本文件,可能带有一些描述。MyClass.class.getResourceAsStream 应该从 jar 中打开文件(而不是文件夹)。

如果您有大量文件,您也可以尝试将自己的 jar 重新打开为 ZipFile,然后您可以使用 ZipFile API 在您的文件夹中搜索条目。然而,这更复杂。

于 2013-02-02T10:25:08.950 回答