eclipse下的文件路径问题

一个java工程,文件路径等设置如下:
project  

-src
                    -org
                      -test
                        -test.java
                    test.properties
          -bin
                    -org
                      -test
                        -test.java
                    test.properties

其中在test.java中要载入test.properties文件。但是在eclipse中直接运行时说
java.io.FileNotFoundException:   test.properties  

我在test.java中的路径指定的是:test.properties
test.properties就在src目录之下。
但是我在外面通过命令行的形式运行   java   org.test.test   是可以正常运行的,这是什么原因,如果我把test.properties直接放在工程下面就可以在eclipse里面正常运行,但是命令行的形式又说找不到文件了。
好像是鱼和熊掌不可兼得:(
有没有什么解决方法?有一点要明确地是:程序中只能写相对路径。
_________________________________________________________________________________________
(1)解决办法一:
你应该把test.properties放在那工程的下面!
或者如果你放到了src下``获取文件的路径的时候就应是 new   File( "bin/test.properties ")了

(2)解决办法二:
采用:ClassLoader.getSystemResource("test.properties");
可以正确获得资源文件test.properties的绝对路径,例如:
“file:/D:/JworkSpace/RMIbasedDistributedDTIN/bin/test.properties”,因此,也就能够正确地定位资源文件了!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
附:
通用的相对路径解决办法
面对这个问题,我决定编写一个助手类ClassLoaderUtil,提供一个便利方法[public   static   URL   getExtendResource(String   relativePath)]。在Web应用程序等一切Java程序中,需要定位classpath外的资源时,都使用这个助手类的便利方法,而不使用 Web应用程序特有的ServletContext.getRealPath( "/ ")方法来定位资源。
 
利用classpath的绝对路径,定位所有资源
这个便利方法的实现原理,就是“利用classpath的绝对路径,定位所有资源”。
ClassLoader类的getResource( " ")方法能够得到当前classpath的绝对路径,这是所有Java程序都拥有的能力,具有最大的适应性!
而目前的JDK提供的ClassLoader类的getResource(String   相对路径)方法,只能接受一般的相对路径。这样,使用ClassLoader类的getResource(String   相对路径)方法就只能定位到classpath下的资源。
如果,它能够接受“../”这样的参数,允许我们用相对路径来定位classpath外面的资源,那么我们就可以定位位置的资源!
当然,我无法修改ClassLoader类的这个方法,于是,我编写了一个助手类ClassLoaderUtil类,提供了[public   static   URL   getExtendResource(String   relativePath)]这个方法。它能够接受带有“../”符号的相对路径,实现了自由寻找资源的功能。


http://blog.csdn.net/shendl/archive/2006/12/03/1427475.aspx

转载于:https://www.cnblogs.com/Mr-xiao/p/6993025.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值