java.io.FileNotFoundException:文件:/xxxxx
我正在尝试从java代码编辑一个xml文件。方法如下:java.io.FileNotFoundException:文件:/xxxxx,java,Java,我正在尝试从java代码编辑一个xml文件。方法如下: public static void changeReportPath(String reportPath){ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder; try { docBuilder = docFactory.newDocument
public static void changeReportPath(String reportPath){
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder;
try {
docBuilder = docFactory.newDocumentBuilder();
File file = new File(reportPath);
Document doc = docBuilder.parse(reportPath);
// Get the root element
Node root = doc.getFirstChild();
// Get the staff element by tag name directly
NodeList parameter = doc.getElementsByTagName("defaultValueExpression");
NodeList defaultValueExpression =parameter.item(0).getChildNodes();
defaultValueExpression.item(0).setTextContent('"'+"/home/amira/work/"+'"');
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(reportPath));
transformer.transform(source, result);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
下面是方法调用:
Utilities.changeReportPath("/home/amira/xx/runtime/uploads/report/project/myfile.jrxml");
以下是错误日志:
但问题仍然存在使用文件而不是URI:
Document doc = docBuilder.parse(reportPath);
替换为:
Document doc = docBuilder.parse(file);
根据Java文档:
公共类FileNotFoundException扩展IOException
表示有人试图打开由指定
路径名已失败
FileInputStream将引发此异常,
FileOutputStream和RandomAccessFile构造函数
指定的路径名不存在。它也会被这些
构造函数,如果文件确实存在但由于某种原因
不可访问,例如当试图打开只读文件时
用于书写的文件
因此,您要么没有该文件,要么没有所需的权限我不确定,但我认为您的问题在于定义路径。例如,我的意思是您应该将项目根路径添加到文件地址。我只能假设您检查了文件是否确实存在?找不到的文件是
DEVFACCOA.jrxml
,在您的调用示例中,它是myfile.jrxml
。不确定Jasper文件的外观,但可能是指您丢失的文件?不,不,我测试了两次,该文件存在。如果您的应用程序没有访问该文件的权限,可能是权限问题吗?谢谢,但问题仍然存在,可能是权限问题。试试这个:chmod u+rw,g+rw,o+rw用于您的文件我尝试了这个文档doc=docBuilder.parse(“file://home/amira/kopiMap/runtime/uploads/report/TestReport/DEVFACCOA.jrxml");但是它给出了这个错误java.net.UnknownHostException:home在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)在java.net.Socket.connect(Socket.java:519)在java.net.Socket.connect(Socket.java:469)在sun.net.NetworkClient.doConnect(NetworkClient.java:157)上
Document doc = docBuilder.parse(reportPath);
Document doc = docBuilder.parse(file);