2012-09-24 125 views
0

我想訪問以獲取我的資源密鑰文件的字符串路徑。如果我在eclipse中調試項目,一切都像魅力一樣,但是如果我將項目導出到可運行的.jar文件 - 由於路徑錯誤,項目無法訪問密鑰文件。Java - 獲取資源文件的字符串路徑

PUBLIC_KEY_PATH = "src/resources/public.key"; 
PRIVATE_KEY_PATH = "src/resources/private.key"; 

但是,如何獲得可運行的.jar文件的正確路徑?我不想獲取URL或其他任何東西 - 我想獲取字符串路徑。

我希望有人能幫助我。


解決方案:

public static String PUBLIC_KEY_PATH = "/resources/public.key"; 
public static String PRIVATE_KEY_PATH = "/resources/private.key"; 

我使用的是InputStream讀取文件內容:

InputStream in = ExampleClass.class.getResourceAsStream(PUBLIC_KEY_PATH); 
ObjectInputStream oin = new ObjectInputStream(new BufferedReader(in)); 

我們去那裏;)

+0

只是一個提示,我不認爲資源的路徑將是「src/resources /」,它將更像「/ resources /」。我對Eclipse的Jar'ing過程並不熟悉,但我確信「src」將等同於Jar的根級別...... – MadProgrammer

+0

對於不起作用的.jar文件。但是如果我只是在eclipse中編譯它就可以。我需要一種適用於兩者的方式。 –

+0

我建議你需要改變Eclipse的執行上下文。我個人不使用Eclipse,但是Netbeans很好地處理這種類型的事情。 – MadProgrammer

回答

3

你可以得到一個inputStream從文件通過Class#getResourceAsStream()。例如:

InputStream is = FooClass.class.getResourceAsStream("public.key"); 

下保存public.key文件在同一目錄 FooClass.java FooClass.class位於

+1

我會使用'FooClass.class.getResourceAsStream(「/ public.key」);'(注意文件名前的斜槓)。 –

+0

謝謝。我會嘗試的。 –

0

可以將這些密鑰複製到WEB-INF/classes何地您正在加載的,叫

this.getClass().getClassloader().getResourceAsStream(fileName)