我已将文件传递给库,并且库正在吐出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 :(得分:0)
您调用的方法是否需要URI或文件名?也就是说,它是否期望该文件:在开始时?
答案 1 :(得分:0)
我可能错了。我只是在猜测。 通常文件的绝对URL以
开头file:///
在异常中我将其视为
file:\
答案 2 :(得分:0)
没有从Resource
到File
的直接转换。您可以尝试从路径中删除“file:\”部分,但它可能不适用于所有情况,即。当作为applet运行时,因为您无法打开具有安全模型的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);
答案 3 :(得分: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:\”。