zoukankan      html  css  js  c++  java
  • com.jcraft.jsch.JSchException: java.io.FileNotFoundException: file:D:developmentideaProjectssalary-card argetsalary-card-0.0.1-SNAPSHOT.jar!BOOT-INFclasses!keystorelogin_id_rsa 资源未找到

    com.jcraft.jsch.JSchException: java.io.FileNotFoundException: file:D:developmentideaProjectssalary-card argetsalary-card-0.0.1-SNAPSHOT.jar!BOOT-INFclasses!keystorelogin_id_rsa (文件名、目录名或卷标语法不正确。)

    Caused by: java.io.FileNotFoundException: file:D:developmentideaProjectssalary-card argetsalary-card-0.0.1-SNAPSHOT.jar!BOOT-INFclasses!keystorelogin_id_rsa (文件名、目录名或卷标语法不正确。)

    问题:

      资源未获取到,开发环境没问题,测试环境有问题;

    原因:

      经排查,发现是因为在打完jar包后运行,jar包中无法获取对应目录的资源文件;

      这主要是因为jar包是一个单独的文件而不是文件夹,不能通过“file:D:developmentideaProjectssalary-card argetsalary-card-0.0.1-SNAPSHOT.jar!BOOT-INFclasses!keystorelogin_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);
    }
  • 相关阅读:
    拓扑排序
    最小费用最大流模板
    有上下界的网络流问题
    网络流模板
    LIS+LCS+LCIS
    【Vijos】1218 数字游戏
    【Vijos】1792 摆花
    【Vijos】1431 守望者的逃离
    【wikioi】1029 遍历问题
    背包模版
  • 原文地址:https://www.cnblogs.com/lfalex0831/p/9638887.html
Copyright © 2011-2022 走看看