2013-02-02 183 views
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")); 

如何解決這個問題?

回答

1

當應用程序打包到jar中時,無法枚舉文件夾中的文件。甚至很難想象這是如何工作的:你打開一個文件夾作爲inptu流,並以這種方式讀取文件名(在該文件夾中)?

最簡單的方法是在文件夾中添加一個包含條目的文本文件,可能帶有一些描述。 MyClass.class.getResourceAsStream應該從jar中打開文件(不是文件夾)。

如果你有很多文件,你也可以嘗試重新打開自己的jar爲ZipFile,然後你可以使用ZipFile API在你的文件夾中搜索條目。然而這更復雜。