1

srcフォルダーにあるtxtファイルからデータを読み取るJavaアプリケーションを作成しました。プログラムで指定したパスは/src/data.txtであり、netbeansから実行すると機能します。しかし、jarファイルを開こうとすると、何も開きません。そこで、コマンドラインからjavacを使用してみましたが、data.txtが見つからないというエラーが表示されます。

データファイルがjarに含まれていることを確認して、スタンドアロンとして機能するようにするにはどうすればよいですか?ありがとう。EDIT1:これは私がファイルをロードするために使用するコードのスニペットです。また、使用されるパスは前述の/scr/data.txtです。

public String [] openFile() throws IOException {
      FileReader fr = new FileReader(this.path);
      BufferedReader br = new BufferedReader(fr);
      String []text = new String[this.numberoflines];
      for(int i=0;i<this.numberoflines;++i)
      {
          text[i]=br.readLine();
      }
      br.close();
      return text;
}

EDIT2:ここにtvf出力があります:

    エラー:メインクラスのjarが見つからないかロードできませんでした

C:\Users\Abhishek>jar -tvf Scrades.jar 0 Sun Jan 22 18:47:08 IST 2012 META-INF/ 199 Sun Jan 22 18:47:06 IST 2012 META-INF/MANIFEST.MF 2562 Sun Jan 22 18:47:08 IST 2012 CombinationGenerator.class 684 Sun Jan 22 18:47:08 IST 2012 Gameplay$1.class 684 Sun Jan 22 18:47:08 IST 2012 Gameplay$2.class 684 Sun Jan 22 18:47:08 IST 2012 Gameplay$3.class 684 Sun Jan 22 18:47:08 IST 2012 Gameplay$4.class 684 Sun Jan 22 18:47:08 IST 2012 Gameplay$5.class 969 Sun Jan 22 18:47:08 IST 2012 Gameplay$6.class 18279 Sun Jan 22 18:47:08 IST 2012 Gameplay.class 2275 Sun Jan 22 18:47:08 IST 2012 PermutationGenerator.class 1252444 Sun Jan 22 18:47:08 IST 2012 eng_final1.txt 3771960 Sun Jan 22 18:47:08 IST 2012 english_huge.txt 815532 Sun Jan 22 18:47:08 IST 2012 english_long.txt 16104 Sun Jan 22 18:47:08 IST 2012 english_short.txt 1506 Sun Jan 22 18:47:08 IST 2012 readFile.class
4

1 に答える 1

0

winrar のような rar エクストラクターを使用して、jar アーカイブ内のファイルを手動で検査、配置、および削除できますClass.getResourceAsStream(String)

    InputStream is = getClass().getResourceAsStream("/src/data.txt");
    InputStreamReader isr = new InputStreamReader(is);
    BufferedReader br = new BufferedReader(isr);
    String line;
    while ((line = br.readLine()) != null){
      //Perform operations
    }
    br.close();
    isr.close();
    is.close();
于 2012-01-22T07:18:22.033 に答える