JAVA 获取项目路径

在jsp和class文件中调用的相对路径不同。 在jsp里,根目录是WebRoot 在class文件中,根目录是WebRoot/WEB-INF/classes 当然你也可以用System.getProperty("user.dir")获取你工程的绝对路径。

另:在Jsp,Servlet,Java中详细获得路径的方法!

1.jsp中取得路径: 

 

以工程名为TEST为例: 

 

(1)得到包含工程名的当前页面全路径:request.getRequestURI() 

结果:/TEST/test.jsp 

(2)得到工程名:request.getContextPath() 

结果:/TEST 

(3)得到当前页面所在目录下全名称:request.getServletPath() 

结果:如果页面在jsp目录下 /TEST/jsp/test.jsp 

(4)得到页面所在服务器的全路径:application.getRealPath("页面.jsp") 

结果:D:\resin\webapps\TEST\test.jsp 

(5)得到页面所在服务器的绝对路径:absPath=new java.io.File(application.getRealPath(request.getRequestURI())).getParent(); 

结果:D:\resin\webapps\TEST 

 

2.在类中取得路径: 

 

(1)类的绝对路径:Class.class.getClass().getResource("/").getPath() 

结果:/D:/TEST/WebRoot/WEB-INF/classes/pack/ 

(2)得到工程的路径:System.getProperty("user.dir") 

结果:D:\TEST 

 

3.在Servlet中取得路径: 

 

(1)得到工程目录:request.getSession().getServletContext().getRealPath("") 参数可具体到包名。 

结果:E:\Tomcat\webapps\TEST 

(2)得到IE地址栏地址:request.getRequestURL() 

结果:http://localhost:8080/TEST/test 

(3)得到相对地址:request.getRequestURI() 

结果:/TEST/test


Java 项目获取当前项目的工作目录或 classpath 路径,可以通过不同的方式实现,具体取决于运行环境和需求。 ### 获取当前项目的工作目录 Java 提供了系统属性来获取当前工作目录,即运行时项目所在的目录。这个目录通常是启动 JVM 时所在的目录。 ```java String projectPath = System.getProperty("user.dir"); System.out.println("当前项目的工作目录:" + projectPath); ``` 该方法适用于大多数标准 Java 应用程序,例如通过命令行或者 IDE(如 Eclipse、IntelliJ IDEA)启动的项目[^3]。 ### 获取 classpath 路径 #### 1. 使用 `ClassLoader` 获取 classpath 根路径 ```java String classpath = ClassLoader.getSystemResource("").getPath(); System.out.println("Classpath 路径:" + classpath); ``` 此方法返回的是 classpath 的根目录路径。在大多数情况下,它指向 `classes` 目录(如果是 Maven 或 Gradle 项目,通常在 `target/classes` 中)[^4]。 #### 2. 使用当前类的 `getResource` 方法 ```java String classpath = MyClass.class.getResource("/").getPath(); System.out.println("Classpath 路径:" + classpath); ``` 这里的 `MyClass` 是当前类的名称。`getResource("/")` 返回的是 classpath 的根路径。如果去掉斜杠,则返回当前类所在包的路径。 #### 3. 在 Web 项目获取 classpath 如果是在 Spring 等框架中使用,可以通过 `ClassPathXmlApplicationContext` 获取 classpath 路径: ```java ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(); String classpath = context.getResource("").getFile().getAbsolutePath(); System.out.println("Classpath 路径:" + classpath); ``` 此方法适用于典型的 Spring Web 项目结构,能够获取 classpath 的绝对路径[^4]。 ### 注意事项 - **开发环境与运行环境差异**:在 IDE 中运行时,classpath 通常指向项目的 `src/main/resources` 或 `target/classes`;而在打包成 JAR 文件后,classpath 会指向 JAR 包内部的根路径。 - **路径编码问题**:如果路径中包含空格或特殊字符,可能需要使用 `URLDecoder.decode(path, "UTF-8")` 进行解码。 - **资源文件定位**:当需要读取配置文件时,建议使用 `ClassLoader.getResourceAsStream()` 或 `Class.getResourceAsStream()` 方法,这样可以避免直接处理路径字符串。 ### 示例代码 ```java public class PathExample { public static void main(String[] args) { // 获取当前项目工作目录 String projectPath = System.getProperty("user.dir"); System.out.println("当前项目的工作目录:" + projectPath); // 获取 classpath 根路径 String classpath1 = ClassLoader.getSystemResource("").getPath(); System.out.println("Classpath 路径(ClassLoader):" + classpath1); // 获取 classpath 根路径(通过当前类) String classpath2 = PathExample.class.getResource("/").getPath(); System.out.println("Classpath 路径(当前类):" + classpath2); } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值