java jar 文件 路径问题_「问答」解决jar包运行时相对路径问题-程序员宅基地

技术标签: java jar 文件 路径问题  

我这几天需要做一个Java程序,需要通过jar的形式运行,还要生成文件。

最终这个程序是要给被人用的,可能那个用的人还不懂代码。

于是我面临一个问题:生成的文件一定不能存绝对路径。

刚开始我想得很简单,打绝对路径改成相对路径不就行了吗?

于是有了这样的代码:

String path = "../test.txt";

File file = new File(path);

……

这个写法本身并没有问题,直接运行代码可是OK的,可以生成与代码平级的一个text.txt文件。

但是,放在jar包里面就不行了。

你把代码打成jar包,然后用java -jar命令运行,你会发现,没有这个文件,不知道它生成到哪里去了。

这是为什么?我也很纳闷。

最后我猜想,命令行运行与Eclipse运行之间的环境差异造成的,可能它们本身运行环境所在的目录就不一样。

所以,我必须找到jar包运行时的路径。

我的代码如下:

try {

LOCATION = URLDecoder.decode(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getFile(),

"UTF-8");

System.out.println("获取路径成功:LOCATION=" + LOCATION);

} catch (UnsupportedEncodingException e) {

System.out.println("获取路径失败:" + e.getMessage());

LOCATION = "";

}

注意:这里的MyClass.class是我程序的入口文件,你可以根据需要更换。

最终打印出的路径是:

获取路径成功:LOCATION=/Users/maomao/Documents/eclipse/test.jar

也就是说,这个路径是包含了jar文件名在内的,使用时需要注意。

以上就是这次分享,有问题欢迎留言给我。

我是毛毛,感恩遇见。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39590635/article/details/114442068

智能推荐

初步解析小程序前端框架vant-ui源码_微信小程序vantpopup源码-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏2次。初步解析小程序前端框架vant-ui源码本学期的系统分析课程要求我们做一个小项目,我们以微信小程序为框架进行了项目的前端搭建,在UI上以开源组件库vant-ui为基础进行了设计,其中用到了许多该开源库的设计,对于项目前端起到了很大的帮助。组件库的使用教程在 https://youzan.github.io/vant-weapp/#/intro ,介绍说明比较详细且简单,因此这里不再赘述,这里..._微信小程序vantpopup源码

树状数组上二分-程序员宅基地

文章浏览阅读3.2k次。树状数组+二分考虑一个简单的问题,维护一个数组,支持每次修改一个数的值,保证每时每刻每个数都为非负数。每次查询求前缀和kkk lower_bound 的值。对于修改,可以用树状数组、线段树等数据结构维护。二分查找可以在[l,r][l,r][l,r]的范围上二分答案,mid=⌊l+r2⌋mid = \lfloor \frac{l+r}{2} \rfloormid=⌊2l+r​⌋,验证midmidmid的前缀和是否大于kkk,并调整midmidmid。时间复杂度O(log22n)O(log^2_2n)O_树状数组上二分

数据结构——顺序串(定义初始化、赋值、遍历、两串比较)_串的初始化-程序员宅基地

文章浏览阅读3.4k次,点赞8次,收藏47次。S;串的组成1length用length记录串的长度是为了减少后期的遍历串获取串长度的时间复杂度。如果不设置length的话,每一次获取字符串长度都需要一次循环,时间复杂度为O(n),如果设置了length的话,给串新增字符的过程中就记录当前串的长度,未来需要串的长度的时候直接获取length就可以了,时间复杂度降低为O(1)。2chch是串里的字符串。......_串的初始化

Maven的dependency中无版本号的可能情况_android studio dependencies里没有版本信息-程序员宅基地

文章浏览阅读2.3k次。pom文件的依赖无版本号的可能原因_android studio dependencies里没有版本信息

Logstash:运用 jdbc_streaming 来丰富我们的数据_logstash jdbc_streaming-程序员宅基地

文章浏览阅读2.8k次,点赞4次,收藏7次。在IoT物联网时代,我们经常会遇到从传感器采集数据的情况。这些传感器,可以上传物联网数据,比如温度,湿度。通常这些传感器带有自己的ID,但是它并不具有像地理位置等这样的信息。当物联网数据传到我们的数据平台时,我们希望对采集上来的数据进行数据的丰富,比如我们对物联网的数据加上它所在的位置等信息,这将对我们的数据分析非常有用。这些需要丰富的数据通常会存放于一个关系数据库的表格中,比如MySQL的数据库..._logstash jdbc_streaming

工业数据分析技术与实战之入门——昆仑数据田春华培训听课记录_工业数据分析 实战培训-程序员宅基地

文章浏览阅读512次。田老师发音不标准啊,好多词听好几遍,再关联上下文,连猜带蒙的才勉强能明白,不过有的也不一定对。记录以反复学习。视频链接:https://appgzdr0r6c3350.h5.xiaoeknow.com/v1/course/column/p_5e90181d2f5c2_Ut1xWLXN?type=3&share_user_id=u_5e91169429c27_G0xxVfLReS&share_type=2&scene=%E5%88%86%E4%BA%AB&access_en_工业数据分析 实战培训

随便推点

物联网能为企业带来哪些创新?看看这些成功案例!-程序员宅基地

文章浏览阅读108次。物联网(Internet of Things,IoT)是指通过互联网连接各种设备和物品,使它们能够相互通信和交换数据的网络。在这个数字化时代,物联网已经成为了企业数字化转型的重要驱动力。通过物联网技术,企业可以实现对企业数据的实时监控、数据分析和智能化决策,从而提高企业的效率和效益,实现更高的商业价值。下面,我们将介绍一些成功的物联网应用案例,以帮助您更好地了解物联网的潜力。

阶次跟踪的角域重采样matlab,一种基于包络提取的高精度无键相信号阶次跟踪方法及系统与流程...-程序员宅基地

文章浏览阅读1.7k次。本发明涉及一种基于包络提取的高精度无键相信号阶次跟踪方法及系统,属于故障诊断技术与信号处理分析技术领域。背景技术:传统的阶次齿轮箱故障信号特征提取针对的是恒定转速运转下的测试信号,但对于工程机械等现代大型复杂机械装备中,恶劣的工作环境导致其运行工况复杂,转速和负荷等工况参数的变化将导致其振动信号具有明显的非平稳性,因此其采集的振动信号不直接满足傅里叶变换的平稳性要求。针对此问题出现了阶次跟踪方法,..._matlab阶次跟踪

python高阶知识之——字典/集合推导式_字典推导式 key自增怎么写-程序员宅基地

文章浏览阅读205次。什么是推导式:推导式是用来快速的生成数据1、推导式类型2、字典推导式推导式结合条件语句语法:dict = { key:value for i in xxx if 条件}推导式结合三元运算符语法:dict = { key:value if 条件 else key2:value2 for i in xxx}3、字典推导式原则4、注意事项5、集合推导式......_字典推导式 key自增怎么写

C语言经典编程之字符串_char ch : input-程序员宅基地

文章浏览阅读1.5k次,点赞6次,收藏18次。C语言经典编程之字符串:按特定顺序输出压缩,IP地址判断是否合法,字符串压缩、解压、排序,查找相同的字串,单词升序排列,统计单词个数,Objective-C和C++命名之争,字符串删除、插入、替换、抽取、交换、拼接、分割,统计字母在字符串中出现的次数等。_char ch : input

EXCEL高级技巧_在exce设置t形-程序员宅基地

文章浏览阅读917次。也许你已经在Excel中完成过上百张财务报表,也许你已利用Excel函数实现过上千次的复杂运算,也许你认为Excel也不过如此,甚至了无新意。但我们平日里无数次重复的得心应手的使用方法只不过是Excel全部技巧的百分之一。本专题从Excel中的一些鲜为人知的技巧入手,领略一下关于Excel的别样风情。 一、让不同类型数据用不同颜色显示   在工资表中,如果想让大于等于2000元_在exce设置t形

java解析xml文件_java 解析 xml 版本2.0-程序员宅基地

文章浏览阅读1.4w次,点赞7次,收藏33次。java解析xml常用的2种方法第一种 dom解析第二种 dom4j解析<?xml version="1.0" encoding="UTF-8"?><books> <book id="001"> <id>9</id> <title>Harry Potter</title> <author>J K. Rowling</author> </bo_java 解析 xml 版本2.0