系统找不到指定的路径

/**

  • 创建DAO缓冲池,保存DAO对象
  • @author
    *
    */
    public class DAOFactory {

    private Map daoMap = new HashMap();

    private static DAOFactory df;
    /**

    • 私有构造
    • @param path
      */
      private DAOFactory(String path) {

      try {
      SAXReader saxr = new SAXReader();

      Document doc = saxr.read(new File(path + "/daoContext.xml"));
      

      } catch (Exception e) {
      System.out.println("DAOFACTIRY创建出错!!!");
      e.printStackTrace();
      }

    }
    /**

    • 获取WEB-INF目录下‘daoContext.xml’文件的路径
    • @return 路径 */ public static String myPath(){ URL u = DAOFactory.class.getClassLoader().getResource("."); String path= new File( u.getFile()).getParent()+"/webapps/BTrankLine/WEB-INF"; return path; } } [color=red] --------------下面是报的错误[/color] ===path:C:\Program%20Files\Apache%20Software%20Foundation\Tomcat%206.0/webapps/BTrankLine/WEB-INF DAOFACTIRY创建出错!!! org.dom4j.DocumentException: C:\Program%20Files\Apache%20Software%20Foundation\Tomcat%206.0\webapps\BTrankLine\WEB-INF\daoContext.xml (系统找不到指定的路径。) Nested exception: C:\Program%20Files\Apache%20Software%20Foundation\Tomcat%206.0\webapps\BTrankLine\WEB-INF\daoContext.xml (系统找不到指定的路径。) at org.dom4j.io.SAXReader.read(SAXReader.java:266) at com.lansone.btrankline.dao.DAOFactory.(DAOFactory.java:33) at com.lansone.btrankline.dao.DAOFactory.instance(DAOFactory.java:59)

说来也怪,以前都是可以的,最近重装系统后,tomcat6.0 ,myEclipse6.0 等都重装后,就报这个错误了
[b]问题补充:[/b]
现在是在windows上面,以后还要部署到linux上的,把路径写死的,不大好啊

我的意思不是说把路径写死,

是给你定位问题,

这个获得路径的方法写得有问题

public static String myPath(){
URL u = DAOFactory.class.getClassLoader().getResource(".");
String path= new File( u.getFile()).getParent()+"/webapps/BTrankLine/WEB-INF";
return path;
}

看看这文章提供的解决方案,很好用

Java路径问题最终解决方案—可定位所有资源的相对路径寻址
http://blog.csdn.net/shendl/archive/2006/12/03/1427475.aspx

%20 代表空格
你这个如果不显示 %20 而显示空格应该就应该不会报错。
正如你所说,你以前是可以的。

如果实在不行,你把这些[color=red]文件夹名[/color]有空格的,都改成没有空格的保存。
比如 File Item 改成 FileItem
这样看看还有问题没。。
另外 你解决是什么地方原因 %20
个人理解 :wink:

这个就是目录名空格问题,

你传进去的path是有问题的,应该是没有这种空格字符才对

你可以试试看这样就没问题应该,就可以说明是你的path参数传得有问题

String p =
"C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\BTrankLine\WEB-INF\daoContext.xml";

SAXReader saxr = new SAXReader();

Document doc = saxr.read(new File(p));