我正在尝试使用一个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"));
如何解决此问题?
答案 0 :(得分:1)
将应用程序打包到jar中时,无法枚举文件夹中的文件。甚至很难想象它是如何工作的:你打开一个文件夹作为inptu流并以那种方式读取文件名(在那个文件夹中)?
最简单的方法是添加一个包含文件夹中条目的文本文件,可能还有一些描述。 MyClass.class.getResourceAsStream应该从jar中打开文件(而不是文件夹)。
如果你有非常多的文件,你也可以尝试重新打开自己的jar作为ZipFile,然后你可以使用ZipFile API搜索你文件夹中的条目。然而,这更复杂。