com.jcraft.jsch.JSchException: java.io.FileNo…
2018-09-18 06:34:51来源:博客园 阅读 ()
com.jcraft.jsch.JSchException: java.io.FileNotFoundException: file:\D:\development\ideaProjects\salary-card\target\salary-card-0.0.1-SNAPSHOT.jar!\BOOT-INF\classes!\keystore\login_id_rsa (文件名、目录名或卷标语法不正确。)
Caused by: java.io.FileNotFoundException: file:\D:\development\ideaProjects\salary-card\target\salary-card-0.0.1-SNAPSHOT.jar!\BOOT-INF\classes!\keystore\login_id_rsa (文件名、目录名或卷标语法不正确。)
问题:
资源未获取到,开发环境没问题,测试环境有问题;
原因:
经排查,发现是因为在打完jar包后运行,jar包中无法获取对应目录的资源文件;
这主要是因为jar包是一个单独的文件而不是文件夹,不能通过“file:\D:\development\ideaProjects\salary-card\target\salary-card-0.0.1-SNAPSHOT.jar!\BOOT-INF\classes!\keystore\login_id_rsa”定位jar包内的资源。
解决:
所以综上所述,我们在通过jar包来访问的话,不要使用getResource或getFile方法来访问了,使用resource.getInputStream() 或getResourceAsStream()方法,通过流的形式来访问资源是可以的;
例:
InputStream is=this.getClass().getResourceAsStream("keystore/login_id_rsa");
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String s="";
while((s=br.readLine())!=null)
System.out.println(s);
或
Resource resource = new ClassPathResource("keystore/login_id_rsa"); InputStream inputStream = resource.getInputStream(); ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[100]; int rc = 0; while ((rc = inputStream.read(buff, 0, 100)) > 0) { swapStream.write(buff, 0, rc); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:javaweb学习--jsp
下一篇:关系型数据库中常用的表设计
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash