我现在遇到一个问题,用如下方法可以获得文件本身的路径,但是如果把它打包到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包中,请问这个类如何获取自身的路径?
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包中,请问这个类如何获取自身的路径?
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 = "";
}