2010-06-19 189 views
1

我已經通過了一個文件到圖書館和圖書館被吐出一個FileNotFound錯誤,如下所示:文件未找到錯誤

javax.xml.transform.TransformerException: java.io.FileNotFoundException: file:\C:\Users\Oroma\workspace\IndividualProject_JINQS\WebContent\WEB-INF\classes\presentationlayer\utility\mappings\jmt\networkModel.xml (The filename, directory name, or volume label syntax is incorrect) 

文件發送調用此方法:

private URI getFileLocation(String fName) throws URISyntaxException { 
    return this.getClass().getResource("utility/mappings/jmt/"+ fName).toURI(); 
} 

因此,如果文件不存在,我會在將文件發送到JSIM庫之前獲取空指針方式。

我正在查看錯誤消息:(The filename, directory name, or volume label syntax is incorrect)。查看文件的完整路徑,我看不到任何特殊字符。

有沒有人有任何想法可能會導致錯誤?

編輯: 的方法調用其它庫需要發送一個文件:

SolverDispatcher solver = new SolverDispatcher(); 
File networkModel = new File(getFileLocation("networkModel.xml")); 
solver.solve(networkModel); 
+0

該文件是否存在? C:\ Users \ Oroma \ workspace \ IndividualProject_JINQS \ WebContent \ WEB-INF \ classes \ presentationlayer \ utility \ mappings \ jmt \ networkModel.xml – 2010-06-19 15:39:11

+0

lol,是的。我檢查了。如果沒有this.getClass()。getResource(「utility/mappings/jmt /」+ fName).toURI(); 會引發空指針錯誤。 – Babyangle86 2010-06-20 08:14:03

回答

0

請問您呼叫預期URI或文件名的方法?也就是說,它是否期望該文件:在開始時?

+0

它期望一個文件。我已經將方法調用添加到了原始問題中。 – Babyangle86 2010-06-19 11:32:24

0

我可能是錯的。我只是猜測。 的文件是絕對的URL與

file:/// 

在例外,我看到它開始作爲

file:\ 
+0

這就是爲什麼我試圖使用URI而不是字符串創建文件 – Babyangle86 2010-06-19 11:47:33

0

有從Resource沒有直接皈依到File。您可以嘗試從路徑中刪除「file:\」部分,但它可能不適用於所有情況,即。當作爲小程序運行時,因爲無法打開具有安全模型的File對象。

閱讀資源的內容,最好的辦法是讓InputStream的:

private InputStream getFileLocation(String fName) throws URISyntaxException { 
    return this.getClass().getResourceAsStream("utility/mappings/jmt/"+ fName); 
} 

SolverDispatcher solver = new SolverDispatcher(); 
InputStream networkModelStream = getFileLocation("networkModel.xml"); 
solver.solve(networkModelStream); 
0

我會嘗試得到一些調試信息,可能加入一些印花

private URI getFileLocation(String fName) throws URISyntaxException { 
     URL url = this.getClass().getResource("utility/mappings/jmt/"+ fName); 
     System.out.printf("url: %s%n", url); 
     return url.toURI(); 
    } 

SolverDispatcher solver = new SolverDispatcher(); 
    URI uri = start.getFileLocation("networkModel.xml"); 
    System.out.printf("uri: %s%n", uri); 
    File networkModel= new File(uri); 
    System.out.printf("file: %s - %s%n", networkModel, networkModel.exists()); 
    solver.solve(networkModel); 

最後一個輸出(文件)應該是而不是有協議部分「file:\」。