0

我有一个庞大的程序,我已经花费了 100 多个小时。即使它在 Ecipse 中运行良好,当我导出它时它也不起作用。我只用该代码制作了一个较小的程序来测试它。我已经搜索并更改了我的代码,但当我导出并运行我的 jar 文件时,我仍然无法让我的程序运行。它在 Eclipse 中运行良好。我尝试过文件阅读器、流、缓冲区、站在我的头上,并更改为我在网上看到的有关读取 jar 文件中包含的文件的任何内容。我是编码新手,所以有些事情仍然让我感到困惑。我将 .java 更改为 .zip 并查看了各个部分,文件就在那里。

我的阅读代码是

private void readFile(){
    try {
        System.out.println("starting array");       
        String[] myarray;  
        myarray = new String[5];  
        System.out.println("myarray"+myarray);  
        url = getClass().getResource("classifyinginfo.txt"); 
        System.out.println("url is "+url);
        readbuffer = new BufferedReader(new FileReader(url.getPath()));          
        line1 = readbuffer.readLine();
        line1 = readbuffer.readLine();                  
        line1 = readbuffer.readLine();                  
        line1 = readbuffer.readLine();                                      
        { String splitarray[] = line1.split(",");
            firstentry = splitarray[0];
            myarray[0]=splitarray[3];
            myarray[1]=splitarray[4];
            myarray[2]=splitarray[5];
            myarray[3]=splitarray[6];
            myarray[4]=splitarray[7]; 

            //line2 and 3 readbuffer etc

            Arrays.sort(myarray);
            for(int i=0; i < myarray.length; i++){
                System.out.println(myarray[i]);

                textArea.append(myarray[i]+"\n");}
        }       


        System.out.println(Arrays.toString(myarray)); 
        //  textArea.setText(Arrays.toString(myarray));


        readbuffer.close(); } catch (IOException e) {
        System.out.println("we have an error");}           
    System.out.println("Line: " + line1 );
} 

请告诉我如何在 Eclipse 内外进行这项工作。

4

1 回答 1

1

你只是这样做:

url = getClass().getResource("classifyinginfo.txt"); 
readbuffer = new BufferedReader(new InputStreamReader(url.openStream()));          
line1 = readbuffer.readLine();

该类FileReader可以读取磁盘上的单个文件,仅此而已。但是一旦有了 URL,就不需要使用它。以这种方式修改,无论文件是否在 jar 中,程序都可以运行。

您实际上可以完全消除 URL,然后执行以下操作:

readbuffer =
    new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("classifyinginfo.txt")));          
line1 = readbuffer.readLine();
于 2012-04-24T02:50:56.357 回答