踩坑System.getProperty("user.dir");获取系统属性问题-web项目与本地项目的区别

在使用System.getProperty("user.dir")获取Java项目根路径时,发现它返回的是Eclipse的安装路径而非项目路径。在web项目(如Tomcat)中,这是由于Tomcat对JVM参数的重新定义导致。解决办法是在Eclipse的Tomcat配置中修改Work directory为Tomcat的bin目录,或使用session.getServletContext().getRealPath("/")来获取正确的项目根路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@TOC

问题产生原因

我使用的eclipse
最近在研究 freemarker 转word的方面,写了一些测试类,都是用System.getProperty(“user.dir”) 获取项目 根路径的,但是问题由此产生,在web项目下它得到的是 eclipse 的安装根路径,而不是项目根路径;

剖析原因

user.dir是jvm的系统属性,我们知道System.property可以获取jvm系统属性值,所以System.property(“user.dir”) 是获取jvm中的用户根目录
但是我们要注意的是,在web项目中(这里以Tomcat为例 )在Tomcat中他是重新定义一部分jvm中的参数
use.dir 在eclipse的Tomcat中默认指向的是eclipse的安装目录

解决办法

1.在eclipse中双击 Tomcat server
2.找到General Information
3.点击 open launch configuration
4.找到 Argument中最下面的Work directory
5.在other中选择tomcat中bin文件夹的路径

例如

 D:\AddServer\apache-tomcat-7.0.64\bin

还有web 项目中尽量使用 session.getServletContext().getRealPath("/") 的方式去获取项目跟路径
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值