为了增加系统的灵活性和易移植性,我想通过读取外部资源文件(proterties文件)的方式来获取信息,比如数据库的连接信息如何能让jar文件读取当前目录下的配置文件信息呢,请大家帮个忙吧,试了很多种方式都不行啊  
先谢谢各位大牛们了  O(∩_∩)O~

解决方案 »

  1.   

    当然没问题了,我觉得还是xml好,可以实现 复杂的需求
      

  2.   


    能说下怎么实现的吗,xml文件格式的也行  给个例子参考下,  好吗   多谢了  
      

  3.   

    proterties文件在JAR包中,还是与JAR包同一级目录。同一级目录就不用我说了吧。
    ResourceBundle读资源文件
    class.getClassLoader().getResource()这个方法去获取JAR包中的文件路径。
    不知道是我理解的问题还是什么。
    先说这么一点。
      

  4.   


    说的也对,我的意思是建一个JavaProtect项目,它有个src文件夹,一般的资源文件都是放在这个目录下的,但是打包后就把它打在jar包内了,这个资源文件的内容就无法更改了,不太具有灵活性,我想把资源文件放在src之外的目录,当运行jar文件时,让jar文件区到某一路径下寻找资源文件(如与jar文件处于同一目录,要用相对路径哦),如果没有改资源文件就提示找不到资源文件,这样的话,我们就可以方便的更改资源文件的信息了我这样表述不知你能否理解 ?  呵呵  谢谢你
      

  5.   

    System.getProperty("user.dir")这个不是取你当前目录吗?如果没有改资源文件就提示找不到资源文件? =》你的意思,资源文件没有修改要提示找不到?那你记载一次最后修改时间吧,比较一下就知道了。我真不知道为什么不能修改资源文件。
      

  6.   


    打在jar包中的文件能修改吗, 不要重新编译的话 
      

  7.   

    给你贴一个log4j的测试用例,新建一java Proj
    包结构在下面的java类中可以很明显的看到,将log4j.properties放在src目录下(如果用文件夹查看,双击src文件夹,打开就可以看到),将log4j.jar加入Proj编译环境,一下是测试代码package com.jankey.log;import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    public class Log {
    @SuppressWarnings("unused")
    public Logger loger;
    private static Log log;
    private Log() {
    String filePath = this.getClass().getResource("/").getPath();
    filePath = filePath.substring(1).replace("bin", "src");
    loger = Logger.getLogger(this.getClass());
    PropertyConfigurator.configure(filePath + "log4j.properties");
    } public static Log getLoger() {
    if (null != log) {
    return log;
    } else {
    return new Log();
    }
    }
    }
    package com.jankey.testLog;import com.jankey.log.Log;public class LogTest {
    private Log log = Log.getLoger();
    public void info(Object obj) {
    log.loger.info(obj);
    }
    public static void main(String[] args) {
    LogTest lt = new LogTest();
    try {
    int i = 0;
    int[] a = new int[]{0, 1, 2, 3, 4};
    i = a[10];
    }catch(Exception ex) {
    lt.info(ex);
    ex.printStackTrace();
    }
    }
    }
    log4j.properties内容:
    log4j.rootLogger=DEBUG, R
    log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.R.file=D:/logs/Debug.log
    log4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'
    log4j.appender.R.Append=true
    log4j.appender.R.ImmediateFlush=true
    log4j.appender.R.layout=org.apache.log4j.PatternLayout
    log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n
      

  8.   


    String filePath = System.getProperty("user.dir");用这句话,可以指定资源文件的相对目录了,就不必吧资源文件打在jar文件内了,这样就可以方便的修改资源文件信息了,比如可以随意修改驱动名称,url,password等等,方便多了,比一前
      

  9.   


    谢谢,上面的这段代码我有了,我的本意是想把log4j.xml放在src之外的一个目录,怎么办呢,