2015-07-01 92 views
2

我知道,有很多類似的問題,我想我已閱讀並檢查了所有的可能性,而且不知道我做錯了什麼......可執行的JAR - 從項目資源加載信任

我加載到系統屬性來自項目資源包中的兩個證書文件,並且將它們連接到JMS服務器。當在Eclipse中運行的應用程序模式,一切工作正常,問題試圖從運行的JAR文件中讀取資源時occurres,它會導致一個錯誤:

FileNotFoundException: file:\path_to_my_jar!\resources\serverids.jks 

的文件是內部罐子的地方(在主文件夾)。這個文件夾被放置在src/resources中,但我已經嘗試在src之外創建資源文件夾並將其鏈接到具有相同結果的構建路徑。

這是我正在讀的文件和設置的ConnectionManager屬性:

ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); 
    String keyStore = currentClassLoader.getResource("resources/serverids.jks").getPath(); 
    String trustStore = currentClassLoader.getResource("resources/server.truststore").getPath(); 

    System.setProperty("javax.net.ssl.keyStore", keyStore); 
    System.setProperty("javax.net.ssl.keyStorePassword", "pass"); 
    System.setProperty("javax.net.ssl.trustStore", trustStore); 
    System.setProperty("javax.net.ssl.trustStorePassword", "pass"); 

回答

0

獲取該資源爲InputStream,然後念給String你想設置的屬性值。此外,你的情況,你應該提取的資源是這樣的:

CurrentClass.class.getResourceAsStream("blah.jks")

請不要忘記處理後關閉流。

+0

不幸的是,它也會導致空指針異常;/ 我想知道如果它可能是這個JMS證書的問題,他們不能作爲流加載?但是像C:/ temp/etc這樣的文件的絕對路徑可以正常工作(但這是一個糟糕的解決方案....) – argh

+0

你應該做的是在調試模式下爲資源嘗試不同的路徑(在檢查模式期間) - 這會讓你更快找到如何獲得所需的資源。 – user

+0

@argh,只有西斯使用絕對......使用相對路徑盧克.. – user

相關問題