被jar包搞的焦头烂额啊,实在是不能解决了啊,现在只能求助论坛大家帮我解决了啊。
项目文件结构:
confuse __src__
       |    |__mainlginFrame.java
       |    |__Config.java
       |__lib
       |__Config.ini 
Config.java 中有一段读Config.ini文件的代码:大致如下:public class Config {
private final static String filename = "Config.ini";
private String username;
private String password;
public Config() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(filename));
read(reader);
reader.close();
}
我用fat-jar打包之后,jar包在项目文件夹下可以运行,但是换到别的地方就不行了。而且将config.ini文件同打好的jar包放在同一文件夹下可以正常运行。我想知道这个config.ini文件是不是没能打到jar包里面去,还是怎样?我想不需要jar包和config.ini,而是将config.ini打进jar包,至少在自己的电脑,这个jar包可以随意在任何的目录下运行,然后在考虑根据这个jar包打成exe的问题。如果不能实现config.ini和jar包组合在一起,那在这种情况下该如何打成exe发布呢?我虽然查阅了相关的资料,但是没能解决,希望大家能帮帮我。如果我没有叙述清楚,可以给我留言啊。

解决方案 »

  1.   

    可能排版有些问题,我重述一下文件结构啊。
    项目confuse下包含src,lib,config.ing,src下包含mainloginFrame.java和Config.java文件。
      

  2.   

    获取这个文件的绝对路径Config.ini
      

  3.   

    对,获取当前运行包的路径 再加上你的Config.int作为配置文件的路径。
      

  4.   

    config.ini文件有没有打进jar包中,可以用winrar打开jar包,看一下,看config.ini在不在里面。
    不在的话,就是没打进去。不行的话用winrar 找开jar包状态下,可以把config.ini文件复制进去。另外,打完的jar包放在lib文件夹下运行,然后右键文件,选择Build Path--add Build Path 
    (eclipse下)。
      

  5.   

    public static void main(String[] args) {
    Test t = new Test();
    System.out.println(t.getClass().getResource(""));
    System.out.println(t.getClass().getResource("."));
    System.out.println(t.getClass().getResource("/"));
    }
    结果为:
    file:/F:/MyEclipsePath/bin/cn/yh/game/
    file:/F:/MyEclipsePath/bin/cn/yh/game/
    file:/F:/MyEclipsePath/bin/然后把用字符串方法substring或者replace方法把前面的file:/去掉就行了。
      

  6.   

    LZ做成exe以后就无法跨平台了,不如用批处理.bat或.h文件通过java或javaw去执行jar