2016-11-30 14 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,因为它不存在** –

相关问题