java 项目如何获取项目所在的物理根路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 项目如何获取项目所在的物理根路径相关的知识,希望对你有一定的参考价值。

例如:d:\myWorkspace\myproject\WebRoot

怎么用代码获得这个路径?

在java中获得文件的路径在我们做上传文件操作时是不可避免的。web上运行1:this.getClass().getClassLoader().getResource("/").getPath();this.getClass().getClassLoader().getResource("").getPath();得到的是ClassPath的绝对URI路径。如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/System.getProperty("user.dir");this.getClass().getClassLoader().getResource(".").getPath();得到的是项目的绝对路径。如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war2:this.getClass().getResource("/").getPath();this.getClass().getResource("").getPath();得到的是当前类文件的URI目录。如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/com/jebel/helper/this.getClass().getResource(".").getPath();X不能运行3:Thread.currentThread().getContextClassLoader().getResource("/").getPath()Thread.currentThread().getContextClassLoader().getResource("").getPath()得到的是ClassPath的绝对URI路径。如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war/WEB-INF/classes/Thread.currentThread().getContextClassLoader().getResource(".").getPath()得到的是项目的绝对路径。如:/D:/jboss-4.2.2.GA/server/default/deploy/hp.war在本地运行中1:this.getClass().getClassLoader().getResource("").getPath();this.getClass().getClassLoader().getResource(".").getPath();得到的是ClassPath的绝对URI路径。如:/D:/myProjects/hp/WebRoot/WEB-INF/classesthis.getClass().getClassLoader().getResource(".").getPath();X不能运行2:this.getClass().getResource("").getPath();this.getClass().getResource(".").getPath();得到的是当前类文件的URI目录。如:/D:/myProjects/hp/WebRoot/WEB-INF/classes/com/jebel/helper//D:/myProjects/hp/WebRoot/WEB-INF/classes/得到的是ClassPath的绝对URI路径。如:/D:/myProjects/hp/WebRoot/WEB-INF/classes3:Thread.currentThread().getContextClassLoader().getResource(".").getPath()Thread.currentThread().getContextClassLoader().getResource("").getPath()得到的是ClassPath的绝对URI路径。。如:/D:/myProjects/hp/WebRoot/WEB-INF/classesThread.currentThread().getContextClassLoader().getResource("/").getPath()X不能运行最后在Web应用程序中,我们一般通过ServletContext.getRealPath("/")方法得到Web应用程序的根目录的绝对路径。还有request.getContextPath();在Weblogic中要用request.getServletContext().getContextPath();但如果打包成war部署到Weblogic服务器,项目内部并没有文件结构的概念,用这种方式是始终得到null,获取不到路径,目前还没有找到具体的解决方案。 参考技术A request.getSession().getServletContext().getRealPath("/")追问

这个是发布后在tomcat的路径

追答

你需要没发布之前的路径,这个得你自己记住了吧?
还是说你要运行本地应用,获取本地项目路径?

追问

是的我要获取本地java项目存放地址,

追答System.out.println(System.getProperty("user.dir"));

本回答被提问者采纳
参考技术B 不懂这个题啊

普通JAVA类 如何获取,WEB项目的根路径

这是我写的个 WEB service (删除图片功能) 在这里是一个从C#,调用service 的问题,所以用request 和一些对象不能获取到项目的绝对路径,
不知道该怎么办才行,谢谢大家帮助我下

在提问前,你应该选搜索下。web项目的路径问题已有过回答了。贴个代码片段给你吧……,希望能对你有所帮助

/**
* 获取项目classpath目录的绝对路径
*
* @return classes目录的绝对路径<br/>
* file:/F:/tomcat/webapps/J2EEUtil/WEB-INF/classes/
* */
public static URL getAbsolutePathWithClass()
return WebPath.class.getResource("/");


/**
* 获取项目classPath目录下的指定目录的绝对路径
*
* @param path
* classes目录下的指定目录.比如:/com/
* @return file:/F:/tomcat/webapps/J2EEUtil/WEB-INF/classes/com/
* */
public static URL getAbsolutePathWithClass(String path)
return WebPath.class.getResource(path);


/**
* 获取指定类文件的所在目录的绝对路径
*
* @param clazz
* 类
* @return 类文件的绝对路径.例如:<br/> 包com.Aries.Util.Web下的Main.java类.<br/>
* 路径为:file:/
* F:/tomcat/webapps/J2EEUtil/WEB-INF/classes/com/Aries/Util/Web/
* */
public static URL getAbsolutePathWithClass(Class clazz)
return clazz.getResource("");

参考资料:http://zhidao.baidu.com/question/142445629.html

参考技术A 在servlet中String realPath = ServletActionContext.getServletContext() .getRealPath(Constants.dbXmlFileName);
public static final String dbXmlFileName = "/WEB-INF/classes/jdbc.properties";
貌似是这样的打印结果是跟路径+dbXmlFileName
在jsp中<%=request.getContextPath()%>
参考技术B request.getSession().getServletContext().getRealPath("/");//获取web项目的路径

this.getClass().getResource("/").getPath()//获取类的当前目录
参考技术C 不太懂
不过我觉得是不是应该在XML里配呀

以上是关于java 项目如何获取项目所在的物理根路径的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 上传文件 获取项目根路径 物理地址 resttemplate上传文件

C#获取项目的路径

java项目获取根路径(web项目和application项目的区分)

如何在java中获取当前项目的路径

C#怎样获取项目的debug路径

在java web项目中,如何获取项目的绝对路径(考虑到后期移植不能写死),大神帮忙!