2013-08-06 39 views
10

我想在java中構建一個可運行jar。我需要在jar包中包含一些文件,這樣當我執行jar時,文件將自動從java類中讀取。因此,我在項目中創建了一個文件夾,並從項目中引用這些文件。我在一些教程後創建了jar文件,但我無法將這些外部文件包含在我的jar文件中。請讓我關於創建帶有外部文件的可運行jar。創建包含外部文件的Runnable Jar

我的文件struture是

Test 
| 
| 
-------src 
|  | 
|  default package 
|      | 
|      | 
|      test1.java 
| 
-------FileFOlder 
|    | 
|    | 
|    abc.txt 

我在test1.java類訪問的abc.txt。 我的代碼,

public class test1 { 


public static void main(String[] args) throws IOException { 


    char [] read = new char[20]; 
    String path = new File(".").getCanonicalPath(); 
    path = path+"\\Newfolder\\abc.txt"; 
    System.out.println(path); 
    File nF = new File(path); 
    FileReader fR = new FileReader(nF); 
    fR.read(read); 
    for(char c : read){ 
     System.out.print(c); 
    } 
    fR.close(); 
    System.out.println(" Hi..This is test program "); 
} 

} 

當我使用Eclipse創建導出選項可執行的JAR,我無法看到罐內FileFolder目錄。請給我一些關於這方面的信息。

+0

定義'不能在我的jar文件中包含這些外部文件'。爲什麼不? – EJP

回答

9

這裏是你應該做的,而不是:

把那個文件 JAR文件回。用class.getResourceAsStream()來代替FileFileReader。這裏是如何做到這一點的解釋:How to really read text file from classpath in Java

+1

謝謝你的迴應。您能否讓我知道如何將我的文本文件放入jar文件中。 – Anup

+0

@Anup你試過什麼?你現在如何構建你的jar文件? –

+1

我正在通過Eclipse構建jar文件。我選擇導出選項,然後運行Jar並最終選擇類。我沒有得到任何選擇來選擇其他文件夾。 – Anup

11

問題解決了!

這裏是如何:

1)右鍵點擊你的項目文件夾,並創建一個新的文件夾。

2)將您想要打包到jar中的所有文件移動到該文件夾​​中。

3)單擊project -> properties -> Build Path -> Source -> Add Folder並選擇您剛創建的文件夾。

4)創建你的JAR!

既然你已經創建了文件夾的abc.txt insideit,您可以跳過步驟1和2

編輯:一種方式可以確保您的JAR包含這些文件是使用7zip的。

+0

非常感謝。我按照你的指定創建了jar文件,並在jar文件中獲得了文本文件。但是現在我無法找到從我的代碼中訪問該文件的方法。所以當我運行我的jar文件時,我得到了FileNotFound異常。我無法使用該文件並閱讀內容。如果您有任何關於此事的信息,請告訴我。 – Anup

+0

我從來沒有做過這個我自己,但經過一些瀏覽後,我發現[this](http://stackoverflow.com/questions/2593154/get-a-resource-using-getresource)stackoverflow問題。看起來你可以用'ClassLoader'來訪問類路徑中的文件,其中包括你的abc.txt – scottyseus

+0

oooh我想我可能已經找到['answer'](http://stackoverflow.com/questions/1464291/) how-to-really-read-text-file-from-classpath-in-java) – scottyseus

相關問題