1
     SAXBuilder builder = new SAXBuilder();
     尝试 {
        文件 f = new File("\\\\bady\\SShare\\mart.xml");
        System.out.println(f.exists()); // 返回假
        System.out.println(f.length()); // 返回 0

        文档文档 = builder.build(f); //此时IOException
        元素根 = document.getRootElement();
        元素段落 = root.getChild("mart_element");
        字符串内容 = 段落.getText();
        System.out.println("内容 = " + 内容);
        } 捕捉(JDOMException e){
            e.printStackTrace();
        } 捕捉(IOException e){
            e.printStackTrace();
        }

mart.xml是 Windows 框中的快捷方式C:\Param\Bin。我得到以下 IOException:

线程“主”java.net.ConnectException 中的异常:连接被拒绝:连接
        在 java.net.PlainSocketImpl.socketConnect(本机方法)
        在 java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        在 java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        在 java.net.Socket.connect(Socket.java:524)
        在 java.net.Socket.connect(Socket.java:474)
        在 sun.net.NetworkClient.doConnect(NetworkClient.java:157)
        在 sun.net.NetworkClient.openServer(NetworkClient.java:118)
        在 sun.net.ftp.FtpClient.openServer(FtpClient.java:488)
        在 sun.net.ftp.FtpClient.openServer(FtpClient.java:475)
        在 sun.net.www.protocol.ftp.FtpURLConnection.connect(FtpURLConnection.java:270)
        在 sun.net.www.protocol.ftp.FtpURLConnection.getInputStream(FtpURLConnection.java:352)
        在 JDOMElementTextContent.parseXml(JDOMElementTextContent.java:36)
        在 JDOMElementTextContent.main(JDOMElementTextContent.java:47)

我尝试使用 file: 协议从 URL 打开 Stream 但URLConnection.getInputStream抛出相同的连接被拒绝异常。

任何建议将不胜感激?

4

3 回答 3

2

有问题的代码不能真正产生该错误消息。

首先,简单地创建一个File对象并不会做任何检查,所以请告诉我们你到底了什么File

其次,您使用字符串 literal 指定路径"\\\\bady\\SShare\\mart.xml"。由于字符串文字在 Java 中的工作方式,这归结为 string \\bady\SShare\mart.xml,但是您的异常消息提到\\\\bady\\SShare\\mart.xml,这显然是错误的路径。

所以请告诉我们你是如何真正得到那个File对象的以及你对它做了什么。

于 2011-03-09T09:04:19.713 回答
0

这可能是与权限相关的问题:我过去遇到过这个问题。检查运行 java 代码的用户是否有权访问共享网络驱动器。

于 2011-03-09T08:17:00.770 回答
0

我正在这样做documentBuilder.parse(anExistingFile),网络错误看起来确实很奇怪,因为您读取了一个文件并且没有执行任何与网络相关的操作,但是网络的问题是使用外部 dtd验证 xml (在我的情况下是代理问题)。在 parse 方法的某个地方,它会尝试下载外部 dtd,并导致与网络相关的错误消息。

因此,如果您不关心 dtd 验证而只想读取一些 xml 值: Make DocumentBuilder.parse ignore DTD references

或修复您的代理/网络问题。

于 2021-10-04T11:44:54.800 回答