eclipse中项目部署到tomcat时,tomcat的目录webapps中没有项目,而是部署到了eclipse中的工作空间的一个目录中,路径为:
E:\.metadata\.plugins\org.eclipse.wst.server.core\tmp1
关于路径,不同的环境,获取的路径也不一样:
main环境:虚拟机环境,获取的路径就是工作空间的路径
servlet环境:服务器环境,获取的路径就是服务器的路径
获取项目工程名以下的目录:
相关代码:
获取项目工程名后的绝对路径:
public String getWebInfPath(){
URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
String path = url.toString();
System.out.println("URL="+path);
int index = path.indexOf("WEB-INF");
if(index == -1){
index = path.indexOf("classes");
}
if(index == -1){
index = path.indexOf("bin");
}
path = path.substring(0, index);
if(path.startsWith("zip")){//当class文件在war中时,此时返回zip:D:/...这样的路径
path = path.substring(4);
}else if(path.startsWith("file")){//当class文件在class文件中时,此时返回file:/D:/...这样的路径
path = path.substring(6);
}else if(path.startsWith("jar")){//当class文件在jar文件里面时,此时返回jar:file:/D:/...这样的路径
path = path.substring(10);
}
try {
path = URLDecoder.decode(path, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return path;
}
当前类的绝对路径:
String className = TestClass.class.getName().replace('.', '/')+".class";
URL url = TestClass.class.getClassLoader().getResource(className);
System.out.println(url.getFile());
WEB-INF的绝对路径:
String path = getServletContext().getRealPath("/WEB-INF");