0

.jar エクスポートに関する問題があります。単語をリストに読み込む場所から、.txt ファイルを jar に含める必要があります。私はこれを実現するために使用しました(Eclipseの実行+デバッグモードではうまく機能します):

File file = new File(Worte.class.getClassLoader().getResource("resource/wortliste.txt").getFile());

ここで、JAR ファイルにエクスポートすると、JAR ファイルは実行可能であり、リソースに list.txt および .java ファイルが含まれています (宿題なので ;-) ) が、プログラムは次のように動作しますファイルがありませんでした。getResourceAsStream() を使用すると、同じ問題が発生します。なぜこれがうまくいかないのか誰か知っていますか?2週間前に別のコードでこれを行ったので、わかりません.o_O.

私が試したこと:

  1. プロジェクトを削除して新しいプロジェクトにインポートする
  2. 1 と同様ですが、新しいワークスペースに

私のシステムは、Windows 7 x64 PC、Eclipse Juno、および JRE7 です。

エクスポートに使用するオプション:

[] Export generated class files and resources 
[x] export all output folders... 
[x] export java source files... 
[] export refactorings

[x] compress the contents... 
[x] add directory entries 
[x] overwrite existing files without warning


jar tvf ...
    39 Wed Jan 30 16:19:14 CET 2013 META-INF/MANIFEST.MF
     0 Wed Jan 30 00:34:16 CET 2013 resource/
100250 Wed Jan 30 00:37:24 CET 2013 resource/wortliste.txt
     0 Wed Jan 30 00:34:16 CET 2013 wortspiel/
  1291 Wed Jan 30 01:19:14 CET 2013 wortspiel/BuchstabenKollektion.java
  2251 Sun Jan 27 16:24:42 CET 2013 wortspiel/TestBuchstabenKollektion.java
   506 Sun Jan 27 17:38:48 CET 2013 wortspiel/UI.java
  1187 Sun Jan 27 16:24:42 CET 2013 wortspiel/TestWorte.java
  2932 Wed Jan 30 01:25:00 CET 2013 wortspiel/WortspielGUI.java
  4384 Wed Jan 30 01:50:40 CET 2013 wortspiel/Worte.java
   310 Sun Jan 27 16:25:08 CET 2013 .classpath
   383 Sun Jan 27 16:22:32 CET 2013 .project
  1992 Wed Jan 30 16:02:12 CET 2013 wortspiel/BuchstabenKollektion.class
  2075 Wed Jan 30 16:02:12 CET 2013 wortspiel/TestBuchstabenKollektion.class
  1104 Wed Jan 30 16:02:12 CET 2013 wortspiel/TestWorte.class
   942 Wed Jan 30 16:02:12 CET 2013 wortspiel/UI.class
  4701 Wed Jan 30 16:02:12 CET 2013 wortspiel/Worte.class
   688 Wed Jan 30 16:02:12 CET 2013 wortspiel/WortspielGUI$1.class
   688 Wed Jan 30 16:02:12 CET 2013 wortspiel/WortspielGUI$2.class
  3475 Wed Jan 30 16:02:12 CET 2013 wortspiel/WortspielGUI.class
4

2 に答える 2

0

これを試して:

URL url = Thread.currentThread()。getContextClassLoader()。getResource( "resource / list.txt");

ファイルfile=new File(url.getFile());

于 2013-01-30T15:21:23.487 に答える
0

java.io.Filejar 内のファイルの内容を取得するために使用することはできません。次のスニペットを実行してみてください。

public class TestGetResource
{
    public static void main(String[] args) throws Exception
    {
        URL url = TestGetResource.class.getResource("/resource/wortliste.txt");
        System.out.println("URL: " + url);
        File f = new File(url.getFile());
        System.out.println("File: " + f);
        System.out.println("File exists: " + f.exists());
        
        try {
            FileReader reader = new FileReader(f);        
            reader.read();
        } catch (FileNotFoundException notFoundEx) {
            System.out.println("Caught FileNotFoundException: " + notFoundEx.getMessage());
        }
    }

}

これに似たものが表示されるはずです。

URL: jar:file:/C:/some/path/my.jar!/resource/wortliste.txt

ファイル: file:\C:\some\path\my.jar!\resource\wortliste.txt

ファイルが存在します: false

FileNotFoundException をキャッチ: file:\C:\some\path\my.jar!\resource\wortliste.txt (ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません)

代わりに、ファイルを読み取るためClass.getClassLoader().getResourceAsStream(String)の を取得するために使用します。InputStreamそれでもコンテンツを として読み取る必要がある場合は、Fileコンテンツを一時ファイルにストリーミングできます。

于 2013-01-30T16:18:18.317 に答える