美文网首页
静态文件打入jar包和不打入jar包

静态文件打入jar包和不打入jar包

作者: 墨色尘埃 | 来源:发表于2018-02-06 22:32 被阅读436次

    文件被打入jar包,将jar包放在远程服务器运行,通过下面代码获取失败。

    URL url = ParseExcelUtil.class.getClassLoader().getResource("rules/company.xml");
    File xmlFile = new File(url.getFile());
    System.out.println(url);
    log.info(url.getPath());
    
    远程服务器运行的服务获取的url
    jar:file:/D:/server/gayg/gayg-1.0.jar!/BOOT-INF/classes!/rules/company.xml
    [INFO ] 2018-02-06 18:25:16.105 [http-nio-10002-exec-2] c.j.g.common.exceldbn.ParseExcelUtil - file:/D:/server/gayg/gayg-1.0.jar!/BOOT-INF/classes!/rules/company.xml
    

    通过打印log查看url,发现本机电脑运行的服务获取的url路径和远程服务器运行的服务获取的url路径是正确的,但是远程服务器报FileNotFoundException错误,是因为jar一个二进制文件,jar包里的文件company.xml只是jar包的一部分,相当于是一部分二进制,可以理解为流。所以如果想正确获取company.xml,只能通过getResourceAsStream方法直接获得流。

            InputStream url = null;
            try {
                url = ParseExcelUtil.class.getClassLoader().getResourceAsStream("rules/company.xml");
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    

    不打入jar包,可以直接在远程服务器的相对应目录下放入文件,与代码中的绝对路径一致,也可以成功获取。一般修改频繁的静态文件不打入jar包

    相关文章

      网友评论

          本文标题:静态文件打入jar包和不打入jar包

          本文链接:https://www.haomeiwen.com/subject/opunzxtx.html