SAXBuilder sb=new SAXBuilder();
   URL cl = Client.class.getClassLoader().getResource("");
   base = cl.getPath();
   base = str_trim(base,"/");
   base = base.replace("classes", "");
   doc = sb.build(new FileInputStream( base + "client.xml"));
   root = doc.getRootElement();
我先说一下base + "client.xml"的结果:
"D:\Program Files\Apache Software Foundation\apache-tomcat-7.0.27\webapps\WebContent\WEB-INF\client.xml"路径感觉没问题啊!client.xml正是放在WEB-INF下下面是client.xml文件内容:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
<clients>
<client name="win32fan" key="8273f9a4830487d0fd67eefa1f05423e"></client>
</clients>
经我断点调试,发现doc==null,问题出在哪里呢?

解决方案 »

  1.   

    那段代码我是放在静态代码块中的,并用try catch块包了起来,调试时我没有发现异常变量有任何内容
      

  2.   

    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.io.FileNotFoundException: D:\Program%20Files\Apache%20Software%20Foundation\apache-tomcat-7.0.27\webapps\WebContent\WEB-INF\client.xml (系统找不到指定的路径。)
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    不可能呀,client.xml得确是放在web-inf下的
      

  3.   

    问题原因:
    new File(String filePath);接受正确URI格式的参数和带“空格”(非20%)的正确相对/绝对字符串路径,否则即使给的路径是正确的也会出现找不到文件的异常。我的解决办法:
    client.class.getResource("").toURI().getPath(),