问题描述:只是一个简单的测试程序,程序是由很简单的GUI界面组成,只是一个JTextArea加在一个JPanel里面 然后把JPanel加在JFrame上。然后在文件夹File里面有一个file.txt文件。程序的功能就是从这个txt文件夹里面读取内容然后显示到JTextArea里面。用eclipse编译后,运行没有问题。开始用命令打包打包。建立一个新的文件夹Test,然后把编译好的Test.class,文件夹File放入Test文件夹。然后再在Test文件夹下创建一个MANIFEST.MF文件,内容为:Manifest-Version: 1.0
           Main-Class: Test 
这个说明文件的格式肯定正确。
进入CMD,进入到Test文件夹,输入打包命令, jar cmf MANIFEST.MF Test.jar Test.class File  
打出来的包双击能够运行,可是没有读取到文件file.txt里面的内容,就是JTextArea是空的(之前在ECLIPSE运行没有问题)。然后我把File的一个复制文件夹放在与Test.jar平级的目录下又能读了。从道理上说程序应该从JAR文件里面的File->file.txt里面读取内容的。jar文件的目录有 Test.class  File->file.txt  MITA-INF->MANIFEST.MF (MANIFEST.MF内容为:Manifest-Version: 1.0
                                                                                                                      Main-Class: Test
问题的大概就是这样。为什么不能从JAR里面的文件夹读取我要的文件内容呢?还是我有什么地方错了?请高手们指点一下~~!本人弄这个问题弄得要气短身亡了!!!!!!!还有我用ECLIPSE导出来的JAR包是一个问题。高手们来吧!!!!!

解决方案 »

  1.   

    你是使用getClass().getResource(relativePath)的方法来取得一个文件的URL的吗?
    如果你在类com.caili.trial.Sample中调用这个方法, 那么这个relativePath是相对于jar中的com/caili/trial目录的
    如果relativePath以/开始, 那么就是相对于jar中的根目录的.
      

  2.   

    朋友,我读文件的代码段是:FileInputStream in = null;
    try {
    in = new FileInputStream("File/file.txt");
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    BufferedReader read = new BufferedReader(new InputStreamReader(in));
    try {
    String temp = null;
    while((temp = read.readLine())!=null)
    {
    area.append(temp+ "\n");
    }
    read.close();
    } catch (IOException e) {
    e.printStackTrace();
    }