项目打包部署到tomcat后,无法正常使用相对路径读取文件的问题及解决

我的一个DAO类使用了相对路径来读取一个xml文件:

file = new File("Resources/DailyChallenge/question.xml");

项目的结构:
项目目录结构
打成war包并发布到tomcat服务器之后,运行tomcat自动生成的项目文件夹的目录:
webapps目录下的项目文件夹
按理来说,代码中使用的相对路径应该是正确的,前提是根目录为项目文件夹springMVC_war。但是,运行tomcat时报错:

java.io.FileNotFoundException: F:\tomcat\tomcat9\bin\Resources\DailyChallenge\question.xml (系统找不到指定的路径。)

看来,tomcat认为根目录是startup文件所在的bin目录,在初始化DAO类时去bin目录下寻找Resources\DailyChallenge\question.xml文件,然而它本应该去webapps下的项目文件夹(springMVC_war)里寻找这个文件。
苦思了良久,突然想到是不是tomcat会默认starup文件所在的目录为根目录,如果把startup文件复制一份到webapps内的项目文件夹中,再去执行项目文件夹中的这个startup文件,tomcat就会认为根目录是我的项目文件夹了呢?

执行这个startup文件,发现tomcat可以正常启动了,xml文件被顺利读取。

总结:在我们把项目部署到tomcat服务器上后,先使用bin下的startup文件把war包展开,让tomcat自动在wabapps目录下生成我们的项目文件夹。如果项目当中使用了相对路径,则应该复制startup文件到项目文件夹下,使用这个startup文件来启动服务器,就可以解决相对路径的问题。

如果你有更好的解决办法,欢迎留言指教~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值