我现在遇到一个问题,用如下方法可以获得文件本身的路径,但是如果把它打包到jar后就会出错。class GetPath{//用于得到当前包的路径
    Class clazz =GetPath.class; //你的Class 比如: getClass() 或者 类名.class
    ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader();
    String packageName = clazz.getPackage().getName().replace('.', '/');
    URL packageUrl = currentClassLoader.getResource(packageName);
    File dir = new File(packageUrl.getPath());
  }如果一个类在.jar包中,请问这个类如何获取自身的路径?

解决方案 »

  1.   

    取得BasicDataSource所在的jar路径
         String className = "org.apache.commons.dbcp.BasicDataSource";
         String classNameUrl="/org/apache/commons/dbcp/BasicDataSource.class";
         String temp=null;
            int i = 0;
            try {
             Class.forName(className);        
                java.net.URL classUrl = FilesUtil.class
                        .getResource(classNameUrl);
                temp = classUrl.getPath();
                temp = URLDecoder.decode(temp);
                //如果是windows则从第六个字符开始,否则从第五个字符开始
                if ("Win".equalsIgnoreCase(System.getProperty("os.name").substring(
                        0, 3))) {
                    i = 6;
                } else {
                    i = 5;
                }
                webRoot = temp.substring(i, temp.indexOf("WEB-INF") - 1);
            } catch (Exception e) {
             UlandLogger.debug("取得webRoot时出错:", e);
             webRoot = "";
            }