获取当前jar包的绝对路径
好久没来CSDN了诶嘿o(≧v≦)o
事情的起因是这样的,最近在编写的Java程序,想要在crontab下定时运行。
稍微了解Linux的人都知道,Linux的crontab下运行程序的话,路径是一个容易坑的问题。crontab内的程序运行的路径不是程序所在的路径,这就造成一个麻烦的地方,假如jar包的位置并不确定,而jar包又需要读取同目录的文件,那么我能想到的比较快速的修补办法有:
(1)在crontab下运行jar包的指令前面,添加进入jar包目录的语句
(2)写一个shell脚本,在运行jar包前添加:cd `dirname $0`
唔嗯……从高内聚低耦合的角度来说,这样的修补办法让人觉得有些不舒服。于是,有没有什么办法,能让jar包读取它自身所在的绝对路径呢?
以下就是jar包获取自身所在文件夹的绝对路径的代码:
String jarWholePath = MyClass.class.getProtectionDomain().getCodeSource().getLocation().getFile();try {jarWholePath = java.net.URLDecoder.decode(jarWholePath, "UTF-8");} catch (UnsupportedEncodingException e) { System.out.println(e.toString()); }String jarPath = new File(jarWholePath).getParentFile().getAbsolutePath();
我来逐行解释一下这些内容吧:
第1行:
这一行获取了MyClass这个类所在的jar包的绝对路径。
举个例子来说,假如有一个名为MyClass的类,最后输出到了名为myJar.jar的jar包,该jar包现在放在C:\,那么这一行得到的内容就是:/C:/myJar.jar。
第2~4行:
这些行做了对jarWholePath这个String变量的转码。
如果路径完全是英语字符组成的,那么转码前后看起来是一样的;如果在路径中含有中文字符的话,那么这层转码就是必须的了,不转码就会让中文字符形成乱码。
第5行:
这一行获取了jar包所在的文件夹的绝对路径。
还是接着第1行的例子,这一行得到的结果是:C:/。
以上就是对这段小代码的解释。通过这段代码,我们就得到了jar包所在文件夹的位置,并且存储到了jarPath这个变量中。
写完之后还想讲两句闲话。
java的java.io.File类对文件操作和查看文件属性的功能还是比较完备的,一些常见的操作都可以直接调用函数。
像是这段小代码里最后一行,在通过new File(jarWholePath)得到一个File对象之后,对于文件的操作,包括获取绝对路径、获取上一级文件夹,等等,都可以任意调用函数。对于程序的快速开发,这是很好的帮助。
获取当前jar包的绝对路径相关推荐
- SpringBoot打成Jar包运行,获取运行Jar包的目录
SpringBoot获取运行Jar包的目录 // linux和windows下通用 private String getJarFilePath() {ApplicationHome home = ne ...
- R语言libPaths函数获取或者设置包安装的路径实战
R语言libPaths函数获取或者设置包安装的路径实战 目录 R语言libPaths函数获取或者设置包安装的路径实战 #.libP
- 取 java 程序运行的路径_获取Java程序运行的路径 | 获取当前jar包的路径
经过试验,不管是否是Jar包,不管是否是Tomcat部署,以下三个方法均可实现. package test; public class MyPath { public static String ge ...
- JAVA获取程序/jar包所在路径
public class path{public static void main(String []args){//输出本程序/jar包所在路径System.out.println(System.g ...
- 获得jar包存放路径的方法
获得jar包存放路径的方法 Posted by zeal on 2006-07-11 09:45 , 1371 characters | + 0 - 0 English 转载请保留本行原始出处声 ...
- jar包与war包部署的区别及jar包部署的一个路径访问问题
1.jar包与war包部署的区别 什么是jar包? jar包是类的归档文件,jar文件格式以流行的ZIP文件格式作为基础,和ZIP文件不一样的是,JAR文件不仅仅用来进行压缩和发布,还用来部署和封装库 ...
- java jar包的路径
用java些的脚本,然后打成jar包运行,jar包里的程序需要读配置文件的一些参数,所以需要确定读配置文件的路径.一般配置文件和jar包放置在同一目录下,这个时候就需要jar包里的代码,取到jar包存 ...
- [Maven] 无法获取私服最新Jar包的问题
文章目录 一.私服无法获取最新jar包? 1.1 pom配置 1.2 修改mvn编译命令 1.3 修改版本号 一.私服无法获取最新jar包? 更新了某个工具包到私服之后,编译时却还是获取不到最新的ja ...
- 上传jar包到私服(仅限于翼支付公司工作流程使用)和涉及的技术总结
做这件事情的方向:先修改后提升版本--->上传到私服 ---->项目中使用该jar包 1修改 BankPay.java类 在 gateway-bank-api中 2提升版本 修改gate ...
最新文章
- Pjax是什么以及为什么推荐大家用
- R假设检验之Shapiro检验(正太分布判断)
- 轨道阱 matlab,赛默飞四极杆-轨道阱液质联用仪核心参数详解
- python官网下载哪个版本-python下载哪个版本好
- Algorithms_二叉树二分搜索树初探
- Redis笔记(六):Java中使用Redis
- MySQLdb的安装
- 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”
- 安装以太坊客户端geth的方法
- Java Web开发之一:用好的技术设计来犒赏自己
- SPSS实现重复测量方差分析
- win10装kali linux双系统,win10安装kali组成双系统攻略
- oracle的number类型
- 给body设置背景图片,整个图片完整的充满屏幕
- Google的恶搞新闻联播
- Windows CMD DOS命令
- 2022年博士招生 | 华南理工大学-鹏城实验室 联培博士 专项计划
- 华为云服务器安装Linux并实现本地连接访问
- [跑步] 7种方法增强耐力
- SQL Server 2019 开启数据库远程访问
热门文章
- 以下哪一个不属于python语言的特点-【单选题】下面的4个特点,Python不具备的是?...
- 关于TDOA算法的仿真及比较
- 热血物语怎么过关,怎么通关,为什么无法通关
- IBM Rational Functional Tester用户手册(一)
- C# 练习ListBox控件用法。
- HA存储HP 3PAR 7200c
- 疯狂的大柚柚带你玩转MSP-ESP430G2(基础篇) -----(四)ESP430G2 低功耗模式
- JDK API 版本6、7、8、9汉化文档及部分英文文档CHM一起分享
- JavaScript脚本延迟加载的方式有哪些?
- phpstudy安装sg11组件_宝塔面板一键安装配置SG11加密组件教程