java.io.FileNotFoundException:文件:/xxxxx

java.io.FileNotFoundException:文件:/xxxxx,java,Java,我正在尝试从java代码编辑一个xml文件。方法如下: public static void changeReportPath(String reportPath){ DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder; try { docBuilder = docFactory.newDocument

我正在尝试从java代码编辑一个xml文件。方法如下:

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);