eclipse项目 打包前后的路径变化

本文详细探讨了在Eclipse环境中项目路径的处理方式,并对比了在Eclipse内和打包成jar后的路径处理差异。介绍了如何在不同场景下正确地加载配置文件。

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

     谨以此文,纪念为了搞清楚eclipse项目路径问题而牺牲的几个小时。

 

   在项目到最后准备部署时,需要将其打包成jar,(用fat-jar来整,方便), 在eclipse中的目录结构是:

  

         PathDemo

                 src

                     |-PropertiesReader.java

                 config

                     |-config.Properties

 在PropertiesReader.java中读取的代码是:(代码1)

FileInputStream fis = new FileInputStream("config/config.properties");
p.load(fis);

 

 

       此时使用的是相对路径, 相对与哪个呢? 当然是项目的根目录(而不是src目录), 如果PathDemo这个项目的路径是E:\workspace\PathDemo, 则以上配置文件的路径就是相对于这个路径的。要获取项目的根目录,可以用System.getProperty("user.dir"),在eclipse里打印出来的就是项目的根目录,但是打包成jar后,这个语句获取的结果就不同了。

     如果所使用的配置文件不在项目目录下,则在run的时候将该文件的路径加入到classpath中,运行的时候的也可以找到该文件。这种方式, 可以将配置文件放在任意目录, 这个时候就不能用上面的代码来找文件了,而是需要用:(代码2)

 

InputStream fis = PropertyFileReader.class.getClassLoader().getResourceAsStream("config.properties");
 

 

       打包成jar后,需要把配置文件单独弄出来,放到和jar同目录下的config文件夹下,以提高配置的灵活性,我以为这个时候再用代码1中的方法去查找文件肯定找不到了,于是我到处找方法,找啊找啊找啊,很多人说先把代码改成代码2的方式, 我改! 然后执行时用java -cp config/config.Properties -jar PathDemo.jar, 不行, 显示找不到. 无解之后最后还是把代码改回代码1的方式一试, 竟然可以!!  原来代码被打成jar包后, 在用相对路径找文件时和在eclipse中运行是不一样的, 此时相对于的是jar包所在的目录, 所以用代码1的方式, 同时将配置文件放在和jar同目录下的config文件夹下, 仍然可以找到该文件. 运行jar包时,如果代码里有System.getProperty("user.dir"), 则此时得到的路径就是jar包所在的目录.

 

    菜菜的总结, 不对的地方, 希望您看到后斧正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值