2013-07-03 77 views
0

我在Eclipse中的一個項目日食創建txt文件的jar文件,可以被稱爲

foo_project 
- src 
    - bar_package 
     bam.java 
     info.txt 
    - info.txt 
- resources 
    - info.txt 

在bam.java,比方說,我打印info.txt的內容出像

try { 
     welcome = new BufferedReader(new FileReader("src/info.txt")); 
     String currentLine = null; 
     while ((currentLine = welcome.readLine()) != null) { 
      System.out.println(currentLine); 
     } 
     welcome.close(); 

    } catch (Exception fof) { 
     System.err.println(fof.toString()); 
    } 

它在eclipse中工作,就像我將info.txt放在src文件夾下一樣,但是,一旦將該項目導出到JAR文件,它就不起作用。

在代碼中,我嘗試了「info.txt」以及「src/info.txt」,但他們都沒有工作!正如你所看到的,我幾乎把Info.txt放到了任何地方,但並不成功!

如何在Java代碼中引用此info.txt,並使Java在eclipse和JAR文件中都能找到它?

+0

你應該嘗試使用相對路徑。例如參見http://stackoverflow.com/questions/9466631/java-relative-path 。 – Sane

+0

你有沒有嘗試用winrar打開你的jar文件(例如)並檢查你的txt文件是否在裏面?,可能你沒有將它導出到包中。 – maqjav

+0

是的,txt文件在jar文件中,我檢查了它。 –

回答

0

我結束了使用的類

的getClass()。的getResourceAsStream( 「/info.txt」),這也是一個InputStream

然後我用的InputStreamReader和BufferedReader讀出的文件。

/這裏是src文件夾。該文件夾下的所有內容都將在最後建立到bin文件夾中。

如果你有多個源文件夾(文件夾可以被設置爲通過右鍵單擊源文件夾,並選擇在Eclipse中選擇),所有的源文件夾建成單一bin文件夾

例如, 如果你有源文件夾

sourceA 
    foo_package/... 
sourceB 
    bar_package/... 

然後在垃圾桶,這將是

bin (this is the "/") 
    foo_package/... 
    bar_package/... 

感謝所有的答案和靈感給大家!

-1

你必須把你的txt文件旁邊的jar文件在你的JAR文件夾

這意味着複製您的txt文件到您的jar文件的文件夾不進jar文件

+0

這個txt應該是在包內傳遞。你提出的建議將會起作用,但那不是重點。 –

1

如果您info.txt文字會永遠都是一樣的,而不是把文本看作一個文件,考慮把它當作一種「資源」。如果你這樣做了,你可以將它包含在你的JAR中,而不必將它作爲一個單獨的文件分發。使用Class.getResourceAsStream()方法打開InputStream到資源。

+0

它說getClassLoader()是不確定的BAM –

+0

感謝您的建議,無論如何,我想通了。在那之前錯過一個getClass()。 –

0

要訪問一個JAR文件中的資源,你需要使用

YourClass.getClassLoader().getResourceAsStream("info.txt") 

這樣它看起來的JAR文件中(或者說,在所有的地方類路徑)作爲資源。它既可以在Eclipse中工作,也可以作爲JAR打包。