簡體   English   中英

將.jar與.txt導出為資源將不起作用

[英]Export .jar with .txt as resource won't work

我對.jar導出有問題。 我必須在罐子中包含一個.txt文件,從那里我可以將單詞讀入列表中。 我用它來實現(在Eclipse Run + Debug模式下效果很好):

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

現在,如果我將其導出到JAR文件中,則該JAR文件應為可執行文件,並且該文件在資源中包含list.txt和.java文件(之所以這樣,是因為它是家庭作業;-)),但是該程序的行為類似於沒有文件。 使用getResourceAsStream()時,我遇到同樣的問題。 有人知道為什么這行不通嗎? 我不明白,因為我兩周前用另一個代碼完成了此操作,並且它的工作原理是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

嘗試這個:

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

文件文件=新文件(url.getFile());

您不能使用java.io.File來獲取jar內文件的內容。 嘗試運行以下代碼段,

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());
        }
    }

}

您應該會看到類似的內容,

網址:jar:文件:/ C:/some/path/my.jar!/resource/wortliste.txt

文件:file:\\ C:\\ some \\ path \\ my.jar!\\ resource \\ wortliste.txt

文件存在:假

捕獲到FileNotFoundException:file:\\ C:\\ some \\ path \\ my.jar!\\ resource \\ wortliste.txt(文件名,目錄名或卷標語法不正確)

而是使用Class.getClassLoader().getResourceAsStream(String)獲取用於讀取文件的InputStream 如果仍然需要將內容作為File讀取,則可以將內容流式傳輸到臨時文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM