现在有一个项目要将他打包成一个jar,但是我的配置文件想放在外面不想一起打到jar中,以便提高程序的灵活性,请问这个应该怎么做?

解决方案 »

  1.   

    通常读取配置文件有两种方式:
    一:把配置文件放置在classpath路径的目录下。
    二:可以采用相对路径或绝对路径来读取配置文件。打包在jar中,只是方式一的一种特例而已。
      

  2.   

    不变的可以打包到jar里。可变的放到 System.getProperty("user.home") 下。
      

  3.   

    用JAVA的属性文件工具类啊,Properties。
      

  4.   

    FileInputStream fis = null;
    try {
    fis = new FileInputStream("文件路径");
    Properties prop = new Properties();
    prop.load(fis);
    prop.getProperty("参数名称");// 得到文件参数值
                    } finally {
    try {
    fis.close();
    } catch (IOException ex) {
    System.out.println(ex.getMessage());
    } }
      

  5.   

    哥用的 sysetm.getProperty("user.dir"); 这绝对是你的最佳选择。我以前也碰到过类似的。用这个来加载外部的配置,如xml呀。还有图片路径呀。之类的。完全OK。
      

  6.   

    user.dir写相对路径的话由于整个程序已经打包了,会不会在运行的时候出现找不到配置文件这样的错误呢,而且在运行jar的时候系统中的classpath是不是已经不起作用了?
      

  7.   

    是个问题。
    比方说,部署到服务器中运行,你需要知道服务器启动的目录,有没有访问权限还是个问题。
    放到jar包外,classpath中(即某个classes目录中),用Class.getResourceAsStream来取最好。
      

  8.   

    现在的情况就是整个程序已经被打包了,但是连接数据库的配置文件是放在外面的,源码不能再改(找不到加载配置文件的地方),请问运行这个jar的时候应该怎么加载这个配置文件,我把这个文件的地址加到jar中的mainifest中还是提示找不到这个文件
      

  9.   

    内部应该是调用的classloader加载的,他的加载的路径的顺序是怎么样的呢?我在classpath里面将配置文件的路径加进去也不行,还是提示找不到文件
      

  10.   


    File f = new File(System.getProperty("user.home")+File.separator+"test.propertise");
    Properties p = new Properties();
    p.load(new FileInputStream(f));这个不错
      

  11.   

    java.util.MissingResourceException: Can't find bundle for base name jdbc, locale ja_JP
    不改变原来内部源码的情况下,怎么配置可以执行?内部是直接用的resourcebundle来get的,传过去的参数只有一个名字,没有地址,配置文件在原来的根目录下的时候是可以运行的,但是我现在要把他移出来
      

  12.   

    你在classpath中根目录位置上放一个文件
    jdbc_ja_JP.properties
    就行了。已部署的应用,该文件直接放classes目录下。项目源码的话,直接放src目录下。
      

  13.   


    classpath中根目录位置是指哪里?哪个classpath?系统里,清单里也有,不知道运行-jar命令的时候调用的哪个classpath
      

  14.   

    在classpath里配置:
    方法一:在eclipse里,右键project,选properties,打开java build path,libraties页面,点击add class foader,把配置文件所在的目录添加进来即可;
    方法二:直接修改.classpath文件,在<classpath>节点下增加一行:
    <classpathentry kind="lib" path="config"/>
      

  15.   


    原来你是桌面应用。比方说jar包中META-INF中MANIFEST.MF文件中写有
    Class-Path: .
    的话,则将jdbc_ja_JP.properties和jar包放一起就行了。
      

  16.   


    Class-Path: kibatch.jar lib/commons-logging-1.1.1.jar lib/junit-4.6.jar lib/KiBatBase.jar lib/log4j-1.2.15.jar lib/ojdbc14.jar jdbc.properties 这个是META-INF中MANIFEST.MF中的配置,不管jdbc.properties放在哪(同目录或者lib文件夹)都是提示这个错误
      

  17.   


    打包之后的jar应该和Eclipse中的配置没什么关系了吧,.classpath没有被打包到jar中,包中只有生成的class文件
      

  18.   

    哎,我说老兄,
    你就不会将.加到Class-Path中?
    Class-Path: . kibatch.jar lib/commons-logging-1.1.1.jar(后面略)