javaweb中的java文件会在服务器中生成class文件,比如tomcat目录下的webapps目录下,放你的javaweb项目,在项目中有个WEB-INF目录,里面有一个classes文件夹,里面放的都是对源码进行编译后生成的class文件
实现思路就是先获取到类路径,之后再类路径中截取出相应的项目根路径(因为是知道类和项目的相对位置的)。
可以通过“ 类名classgetResource("")getPath()”方法实现获取到当前的路径。
举例:”String path = XMLSclassgetResource("")getPath()“
解释:以上语句就是获取到XMLS编译后的绝对路径(无法获取到java文件路径的,因为java运行的都是class文件),之后根据实际情况截取任意位置的路径都可以。
java文件中获得路径
ThreadcurrentThread()getContextClassLoader()getResource("") //获得资源文件(class文件)所在路径
ClassLoadergetSystemResource("")
Class_NameclassgetClassLoader()getResource("")
Class_Nameclass getResource("/")
Class_Nameclass getResource("") // 获得当前类所在路径
SystemgetProperty("userdir") // 获得项目根目录的绝对路径
SystemgetProperty("javaclasspath") //得到类路径和包路径
打印输出依次如下:
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/
F:\work_litao\uri_test
F:\work_litao\uri_test\WebContent\WEB-INF\classes;F:\work_litao\uri_test\WebContent\WEB-INF\lib\dom4jjar
java文件中获得路径
ThreadcurrentThread()getContextClassLoader()getResource("") //获得资源文件(class文件)所在路径
ClassLoadergetSystemResource("")
Class_NameclassgetClassLoader()getResource("")
Class_Nameclass getResource("/")
Class_Nameclass getResource("") // 获得当前类所在路径
SystemgetProperty("userdir") // 获得项目根目录的绝对路径
SystemgetProperty("javaclasspath") //得到类路径和包路径
打印输出依次如下:
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/
file:/F:/work_litao/uri_test/WebContent/WEB-INF/classes/com/xml/imp/
F:\work_litao\uri_test
F:\work_litao\uri_test\WebContent\WEB-INF\classes;F:\work_litao\uri_test\WebContent\WEB-INF\lib\dom4jjar
2、 JSP中获得当前应用的相对路径和绝对路径
根目录所对应的绝对路径:requestgetRequestURI()
文件的绝对路径:applicationgetRealPath(requestgetRequestURI());
当前web应用的绝对路径 :applicationgetRealPath("/");
取得请求文件的上层目录:new File(applicationgetRealPath(requestgetRequestURI()))getParent()
在servlet中,可以通过以下方法获取项目的绝对路径:
使用ServletContext对象的getRealPath()方法:
String path = getServletContext()getRealPath("/");
使用类加载器的getResource()方法:
String path = getClass()getClassLoader()getResource("")getPath();
以上两种方法都可以获取到项目的绝对路径,但是第一种方法需要传入相对路径作为参数,而第二种方法则不需要。
第一步: 先获得classpath路径
String classpath = thisgetClass()getResource("/")getPath()replaceFirst("/", "");
这样子可以得到classpath路径,类似于:
F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/WEB-INF/classes/
然后把WEB-INF/classes截取就能获得WebAPP目录啦:
String webappRoot = classpathreplaceAll("WEB-INF/classes/", "");
得到的结果就是:
F:/projects/JavaStudyParent/study-springmvc-junit-test/target/springmvc-junit-test/
通过这个路径你就能获取该文件夹下的所有文件啦
File path =null;
try {
path =new File(ResourceUtilsgetURL("classpath:")getPath());
}catch (FileNotFoundException e) {
// nothing to do
}
if (path ==null || !pathexists()) {
path =new File("");
}
String pathStr = pathgetAbsolutePath();
// 如果是在eclipse中运行,则和target同级目录,如果是jar部署到服务器,则默认和jar包同级
pathStr = pathStrreplace("\\target\\classes", "");
//Systemoutprintln(pathStr+"\\upload");
return pathStr+"\\upload\\";
以上就是关于java web怎么获取class类的编译路径全部的内容,包括:java web怎么获取class类的编译路径、项目在tomcat部署后,如何获取项目的根目录、JAVA中如何得到文件路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)