2010-06-19 280 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:\”。