我用spring 执行定时计划,这个计划在有下载,上传图片等操作。我呢要把这些图片存起来,就要获得项目发布后的路径。请问怎么获得呢?我用DianBoSynchronismImpl.class.getClassLoader().getResource("").getPath();来获取
DianBoSynchronismImpl是我java类。但是这样获取到得好像是E:\myeclispeWorkbase\samplev\WebRoot\WEB-INF\classes
这样的路径部署到服务器上 又对不对呢?好像不是部署后的路径,因为我部署后的路径是
E:\apache-tomcat-6.0.30\webapps\samplev\WEB-INF
请问该如何获得发布后的项目路径。

解决方案 »

  1.   

    System.getProperty("user.dir")这个可以获得项目的路劲。如果是web项目可以使用
    request.getServletContext().getRealPath("\\src");
      

  2.   


    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    String p =this.getServletContext().getRealPath("index.jsp");
    System.out.println(p);
    }输出的是:D:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\testWeb\index.jsp
      

  3.   

    我想得到相对路径,也就是项目发布后的路径,我是在java类里面,不在action中所以得不到request对象!
      

  4.   

    你自己建的是个WEB项目吧...
    你是自己建了WEB项目,又在这个项目上右键点Run出来的结果吧看来得扫扫盲...所有WEB项目都是类似你那种路径的,WEB项目在应用服务器例如TOMCAT下的默认部署路径像这样
    Tomcat目录\webapps\WEB-INF\classes
    而假设你在这个项目中,用MyEclise直接Run单个测试类的话,出现的Class.getResource()路径就类似
    MyEclipse工作目录\项目名\webRoot\WEB-INF\classes
    所以就得到你这个效果而假设你建立的是Java Project的话,部署路径就是项目路径
    假设你的程序已导出为Jar或者classes包,并且部署在D:\test下,在不修改默认工作目录,并且在D:\test下执行程序的话,Class.getResource()的路径就是D:\test所以,你得搞请楚几个概念,1.项目开发位置 2.部署位置 3.执行路径 4.工作目录
      

  5.   


    /**
     * 获得工程的classpath根目录
     * @return String
     */
    public static String getClasspath() {
    try {
    return Class.forName("随便一个类").getResource("/").getPath();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return "";
    }
      

  6.   

    这个是在myeclipse里面运行得到的路径 E:\myeclispeWorkbase\samplev\WebRoot\WEB-INF\classes
    如果你打包放到 tomcat里面运行,就会得到这个路径 E:\apache-tomcat-6.0.30\webapps\samplev\WEB-INF\classes
      所以你完全可以使用这种方式得到路径。