后来查找资料发现是java获取依赖jar包中资源文件跟获取本工程中的资源文件的使用姿势还是有一定区别的,没有使用正确的姿势,经过修正后,我的jar包中的接口欢快的跑起来了。

在逻辑中涉及到拷贝本地配置文件和启动脚本到远端的操作,这个配置文件是作为一个工程内的资源文件存在的,其路径为:NFIT_PACKAGE\src\main\resources\cmdline_config_CPU.txt

需要先获取本地文件然后再传递,这里我一开始用了一个ClassLoader.getSystemResource方法来获取文件,如下所示:String localFilename = "cmdline_config_CPU.txt";

localFilepath = ClassLoader.getSystemResource(localFilename).getPath();

File localfile =new File(localFilepath);

boolean ret = NFITService.putFiletoRemote(localfile, remotePath,localFilename);

在NFIT这个包内直接运行没有任何问题,结果输出如下,可以从日志中看到传输成功了: [INFO ]10:27:07, [Class]NFITServiceImpl, [Method]putFileInputStreamtoRemote, =========putFiletoRemote==========

[INFO ]10:27:07, [Class]NFITServiceImpl, [Method]putFileInputStreamtoRemote, remotefile is /home/hzcuixiaoqing/cmdline_config.txt

[INFO ]10:27:07, [Class]NFITServiceImpl, [Method]putFileInputStreamtoRemote, =========putFiletoRemote Success!==========

但是为什么打包以后在其他工程中调用会出错呢,可以注意到错误提示里面提示的是(文件名、目录名或卷标语法不正确。) 并且查看打印的绝对路径\C\Users\hzcuixiaoqing.m2\repository\com\netease\qa\cloudqa\nfit \0.1.0\nfit-0.1.0.jar!\cmdline_config_CPU.txt 存在一个nfit-0.1.0.jar!叹号,并且查看这个目录,由于指向的确实是一个jar包,因此这样的路径确实访问不到cmdline_config_CPU.txt这个文件。那如何来解决这个问题呢,难道jar包中的资源都没办法获取了么,当然不是!

java的类装载器(ClassLoader)早就考虑到了这一点。

ClassLoader是个什么东东呢:ClassLoader 是类加载器的抽象类。它可以在运行时动态的获取加载类的运行信息。 可以这样说,当我们调用jar中的Resource类时,JVM加载进Resource类,并记录下Resource运行时信息(包括Resource所在jar包的路径信息)。而ClassLoader类中的方法可以帮助我们动态的获取这些信息。

java jar包 资源_一个小坑:java如何访问依赖jar包中的资源文件相关推荐

  1. java 语言 写字板_一个简单的java语言写字板.docx

    一个简单的java语言写字板.docx 一个简单的JAVA语言写字板一.需求分析1.需求分析:现在网络上各种文档编辑器数不胜数.功能也是应有尽有,有能改变字体的,有可以改变字体颜色的,但是,这些软件有 ...

  2. 网易 java社招面试_一个妹子网易Java岗社招面试经历分享

    博客群发软件--用 Windows Live Writer完美发布新浪网易blogcnbl 博客群发软件--用 Windows Live Writer完美发布新浪.网易.blogcn.blogbus. ...

  3. java程序样例_一个完整的java程序示例

    一个完整的java程序示例 2020-08-15 05:22 阅读数 74 第一个java程序 package mypack; //相当于一个目录 public class HelloWorld{ p ...

  4. java单机应用程序_一个简单的java桌面应用:单机版IFTTT

    1.项目背景: ifttt是"if this then that"的缩写,事实上是让你的网络行为能够引发连锁反应.让你使用更为方便.ifttt旨在帮助人们利用各网站的开放API,将 ...

  5. java @valid 密码不一致_一个成熟的Java项目如何优雅地处理异常

    (一)概述 异常处理是一个系统最重要的环节,当一个项目变得很大的时候,异常处理和日志系统能让你快速定位到问题.对于用户或者接口调用者而言,优雅的异常处理可以让调用者快速知道问题所在.本文将介绍如何优雅 ...

  6. java如何获取手机号码_微信小程序+Java获取用户授权手机号码

    前言 小程序内可以直接通过授权获取用户微信号绑定的手机号码或用户添加的其他手机号码,这样可以使得小程序在进行账户的身份可控上又提高了一步,那么应该如何来获取手机号码呢?这篇文章就和大家一起来研究一下. ...

  7. 5年java程序员述职报告_一个5年Java程序员的年终总结,献给还在迷茫中的你

    我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过 ...

  8. java奇怪的问题_一个奇怪的Java集合问题

    int size = list.size(); Integer existIndex = -1; for (int index = 0; index < size; index++) { Pho ...

  9. java上拉变量_「小程序JAVA实战」小程序页面的上拉下拉刷新(50)

    前已经完成了小程序的列表展示,但是对于上拉和下拉刷新这个功能,其实跟小程序的生命周期有关系,一起回顾下完成,上拉和下拉刷新.源码:https://github.com/limingios/wxProg ...

  10. golang原生库mime/multipart上传formdata文件的一个小坑unexpected EOF

    golang原生库mime/multipart上传formdata文件的一个小坑unexpected EOF 遇到的问题 问题代码 问题分析 正确代码 总结 遇到的问题 用mime/multipart ...

最新文章

  1. 5G时代到来,人工智能设备如何重塑TMT行业
  2. svn报错:“Previous operation has not finished; run 'cleanup' if it was interrupted“ 的解决方法...
  3. Js基本函数 2017-03-20
  4. python里的join方法_python中join()方法介绍
  5. LVM逻辑卷管理命令
  6. 未签名程序使用java_java applets(未签名)可以创建/读取cookie吗?
  7. centos dns服务器_用 OpenStack Designate 构建一个 DNS 即服务(DNSaaS) | Linux 中国
  8. 【LeetCode 327】区间和的个数
  9. 【路径规划】基于matlab蚁群和粒子群算法双机器人协调路径规划【含Matlab源码 045期】
  10. 移动端学习笔记(黑马教程)-仿京东首页
  11. 基于爬虫制作的Python翻译程序
  12. ANSI字符集和Unicode字符集
  13. Paddle飞桨动态图教程——轻量级人像语义分割BiSeNet V2(算法原理、训练、部署,含完整代码和数据)
  14. Android 自定义键盘布局
  15. 【jzoj4742】【单峰】
  16. xp系统总是弹出宽带连接服务器,如何处理xp电脑总是弹出宽带连接
  17. C++中字符串变量的定义
  18. JS组合函数(Composition):原来如此!
  19. MFC C++ 中的内存释放问题
  20. hbase_数据备份(导入/导出)

热门文章

  1. android 判断主线程_腾讯Android面试:Handler中有Loop死循环,为什么没有阻塞主线程...
  2. 网页服务器移机设置,手头有一台服务器,应该怎么配置才能正常作为网站服务器运行呢?...
  3. 图邻接表拓扑排序算法c语言完整,在用邻接表表示图时,拓扑排序算法时间复杂度为()...
  4. mysql 分区表 知乎_mysql 分区表
  5. 【转】C# DateTime.Now详细用法
  6. [转]el-table表格翻页后仍记忆所选项
  7. Button的UseSubmitBehavior屬性
  8. SQL SERVER2008 打开脚本总是报“未能完成操作,存储空间不足”
  9. Java 文件读写示例1
  10. linux套接字连接外网,在Linux中的使用ss命令检查套接字 网络连接