2016-11-30 15 views
2

我是Spring Boot的新手。我有這個emailprop.propertiessrc/main/resourceSpring Boot從app.properties下載另一個文件

 //your private key 
     mail.smtp.dkim.privatekey=classpath:/emailproperties/private.key.der 

但我得到的錯誤作爲

類路徑:\電子郵件屬性\ private.key.der(文件名,目錄名 ,或卷標語法是不正確的)

如何正確加載此文件?

更新-1

  • 我的Java代碼 dkimSigner = new DKIMSigner(emailProps.getProperty("mail.smtp.dkim.signingdomain"), emailProps.getProperty("mail.smtp.dkim.selector"), emailProps.getProperty("mail.smtp.dkim.privatekey"));

  • 其工作"D:\\WorkShop\\MyDemoProj\\EmailService\\src\\main\\resources\\private.key.der"相反emailProps.getProperty("mail.smtp.dkim.privatekey")作爲

更新-2

  • 我試圖Java代碼 String data = ""; ClassPathResource cpr = new ClassPathResource("private.key.der"); try { byte[] bdata = FileCopyUtils.copyToByteArray(cpr.getInputStream()); data = new String(bdata, StandardCharsets.UTF_8); } catch (IOException e) { e.printStackTrace(); } dkimSigner = new DKIMSigner(emailProps.getProperty("mail.smtp.dkim.signingdomain"), emailProps.getProperty("mail.smtp.dkim.selector"),data);

  • 錯誤是:java.io.FileNotFoundException: class path resource [classpath:private.key.der] cannot be resolved to URL because it does not exist

  • 試過代碼是: ClassPathResource resource = new ClassPathResource(emailProps.getProperty("mail.smtp.dkim.privatekey")); File file = resource.getFile(); String absolutePath = file.getAbsolutePath();

  • 還是同樣的錯誤..

  • 請更新答案..

+1

首先,你如何試圖從資源文件夾加載文件?你有沒有嘗試[這一個](https://smarterco.de/java-load-file-classpath-spring-boot/)或[這個答案](http://stackoverflow.com/questions/36407575/how-to -get-files-from-resources-folder-spring-framework)?? – AntJavaDev

+0

'File file = new File(String.valueOf(this.getClass()。getResource(「classpath:/emailproperties/private.key.der」)));' – GingerHead

+0

@GingerHead感謝您的重播。我已經嘗試過,但錯誤爲** EmailSmsService \類路徑資源[private.key.der] java.io.FileNotFoundException ** –

回答

1

如果您希望加載這個文件運行,那麼你需要使用ResourceLoader請爲文檔看看here - 8.4節。

Resource resource = resourceLoader.getResource("classpath:/emailproperties/private.key.der"); 

現在,如果你想保持這個確切路徑的屬性文件中,你可以把它那裏,然後它加載到你的Autowired構造函數/場這樣的:

@Value("${mail.smtp.dkim.privatekey}") String pathToPrivateKey 

,然後把它傳遞給資源加載器。

完整的例子,你可以找到here。我不想複製粘貼它。

+0

感謝重播,我試過了,得到的錯誤相同 –

+0

我的java代碼是:'dkimSigner = new DKIMSigner(emailProps.getProperty( 「mail.smtp.dkim.signingdomain」),emailProps.getProperty( 「mail.smtp.dkim.selector」),\t \t \t \t \t emailProps.getProperty( 「mail.smtp.dkim.privatekey」 ));' –

0

如果你的文件所在的位置:

"D:\\WorkShop\\MyDemoProj\\EmailService\\src\\main\\resources\\private.key.der" 

那麼就應該是:

mail.smtp.dkim.privatekey=classpath:private.key.der 

編輯: 我現在明白了,你正在使用DKIMSigner,其預計的文件路徑字符串,

嘗試更改您的代碼,如下所示:

ClassPathResource resource = new ClassPathResource(emailProps.getProperty("mail.smtp.dkim.privatekey")); 
File file = resource.getFile(); 
String absolutePath = file.getAbsolutePath(); 
dkimSigner = new DKIMSigner(emailProps.getProperty("mail.smtp.dkim.signingdomain"), emailProps.getProperty("mail.smtp.dkim.selector"),absolutePath 
); 
+0

仍然收到錯誤,如果** **'System.out.println(emailProps.getProperty(「mail.smtp.dkim.privatekey」))**,這裏是打印**類路徑資源[private .key.dev] ** ** –

+0

我更新了我的答案。 – vmarusic

+0

謝謝,但我仍然有這個錯誤。 **'java.io.FileNotFoundException:類路徑資源[classpath:private.key.der]無法解析爲URL,因爲它不存在** –

相關問題