• 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
  • 相关阅读:
    JAVA语言中冒号的用法
    Tamper Data 安装与使用
    HTTP协议缓存策略深入详解之ETAG妙用
    HTTP协议
    HTTP协议----ETag
    super 使用以及原理
    __slots__用法以及优化
    归并排序详解(Python | Java实现)
    周刷题第二期总结(Longest Substring Without Repeating Characters and Median of Two Sorted Arrays)
    周刷题第一期总结(two sum and two numbers)
  • 原文地址:https://www.cnblogs.com/Mr-xiao/p/6993025.html
Copyright © 2020-2023  润新知