2016-10-10 69 views
0

概述:問題在Linux中訪問春季啓動應用程序的資源文件

我用下面的代碼來創建它是資源/證書/ crt.p12證書文件的密鑰庫:

public static KeyStore getKeyStoreFromFile(String certificateFilePath, 
     String certificatePassword) throws KeyStoreException { 
     File p12File = new File(
      KeyStoreUtil.class.getClassLoader().getResource(certificateFilePath).getFile()); 
     KeyStore.Builder builder = KeyStore.Builder.newInstance("PKCS12", null, p12File, 
      new KeyStore.PasswordProtection(certificatePassword.toCharArray())); 
     return builder.getKeyStore(); 
    } 

它可以在windows平臺上運行。

問題:

然而,當我在Linux平臺上運行的系統無法找到該文件,並拋出以下異常:

java.lang.IllegalArgumentException: File does not exist or it does not refer to a normal file: file:/executable/billpay-billinfo-services.jar!/certificates/crt.p12 

我認爲這是不同平臺的問題,如果有人能幫我找到解決這個問題的方法,我將不勝感激。

+0

在linux上運行java程序的用戶是否有權限讀取和使用此文件? – Nadir

回答

0

首先我瞭解,把證書文件在類路徑是一個不好的做法,因爲它可能需要在未來被改變。所以我將它從類路徑中排除,並將其放在我的jar文件中。這次當我運行我的測試時,證書文件是可訪問的。