解决方案 »

  1.   

    Thread.currentThread().getContextClassLoader().getResource("/").getPath(); 
    可以拿到web工程中WEB-INF/classes 路径。
    服务器启动时,classes文件不会再编译了吧。
      

  2.   


    问题就在这里,启动时不会编译了,但是配置文件是在启动后才创建出来的。
    public class InstallAction extends ActionSupport
    {
    @Override
    public String execute() throws Exception
    {
    // 检测文件是否存在,标志是否是初始化过的 // 首先要获取到配置文件web路径 HttpServletRequest request = ServletActionContext.getRequest();
    System.out.println(request.getSession().getServletContext().getContextPath()); // /policy
    System.out.println(request.getSession().getServletContext().getRealPath("")); // F:\于磊\nyohh\policy\WebRoot
    System.out.println(System.getProperty("user.dir")); // D:\Program Files\apache-tomcat-6.0.37\bin

    // IOUtil.createFile(request.getSession().getServletContext().getContextPath()+"/src/234.txt"); //D:\policy\src/234.txt
    IOUtil.createFile(request.getSession().getServletContext().getRealPath("")+"/../src/123.txt"); //F:\于磊\nyohh\policy\src // request.getSession().getServletContext().getRealPath("")+"/../src/123.txt"
    // request.getSession().getServletContext().getRealPath("")+"/WEB-INF/classes/123.txt"

    if (new File(request.getSession().getServletContext().getRealPath("")+"/../src/123.txt").exists())
    {
    System.out.println("src下的创建出来了");
    }


    if (new File(request.getSession().getServletContext().getRealPath("")+"/WEB-INF/classes/123.txt").exists())
    {
    System.out.println("classes下的创建出来了");
    }
    return SUCCESS;
    }}
    我这会刚试出来了。一旦部署后,就是脱离开myeclipse后系统根本就不会去理财你在哪里生成了什么文件。我把做好的项目路径写到server.xml里面后,直接运行startup.bat启动服务器后,访问后试了几遍生成到src下后,classes里面根本就不会出现那个文件。看来这个东西必须写在哪里,读哪里。
    不过再次感谢你,因为又多了解了到一个拿classes的办法,你可以看我先前的方法有些笨了
      

  3.   

    String path = Test.class.getResource("/").toString();    
    这个也可以拿到,不过有些容器不好使 参看 java代码中获取classpath路径