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 に答える