获取.jar文件运行时所处的路径
在Windows控制台中运行.jar文件时的两种环境:
(1)控制台当前所在目录是.jar文件所在的目录
(2)控制台当前所在目录不是.jar文件所在的目录
我的期望:
我希望在上述两种环境下均可以得到.jar文件所处的路径,且得到的路径是一样的
方式一
(1)建立一个简单的Java Project(PathTest1),代码如下:
String path=System.getProperty("java.class.path");
System.out.println(path);
(2)将项目打包为Test1.jar文件,将其放在"F:\work\"目录下,在Windows控制台运行,查看运行情况
可以发现两种环境下运行.jar文件得到的结果是一样的,均为.jar文件的完整路径
方式二
(1)建立一个简单的Java Project(PathTest2),代码如下:
String path=Test2.class.getProtectionDomain().getCodeSource().getLocation().getPath();
System.out.println(path);
(2)将项目打包为Test2.jar文件,将其放在"F:\work\"目录下,在Windows控制台运行,查看运行情况
可以发现两种环境下运行.jar文件得到的结果是一样的,也均为.jar文件的完整路径
But,路径貌似有些不对劲啊,路径中的分割符不是Windows中的"\",而是"/",这个该怎么处理呢???
办法肯定是有的,在上述代码后面加上如下代码:
if(path.endsWith(".jar")){
path = path.substring(0, path.lastIndexOf("/") + 1);
}
File file = new File(path);
path = file.getAbsolutePath();
System.out.println(path);
如此这般处理,再次打包运行,得到的结果即为该.jar文件的完整路径
获取.jar文件运行时所处的路径的更多相关文章
- maven打包可执行jar文件运行报错
起因 项目中同时依赖了Spring和MyBatis,并使用mybatis-spring集成MyBatis和Spring. 使用maven打包为可执行jar文件运行,打包插件为:maven-shade- ...
- C# 获取媒体文件播放时长
引用: Interop.Shell32.dll 方法: /// <summary> /// 获取媒体文件播放时长 /// </summary> /// <param na ...
- c#获取Amr文件的时长(毫秒)亲测有效
/// <summary> /// c#获取Amr文件的时长(毫秒) /// </summary> /// <param name="fileName" ...
- c/c++编译时,指定程序运行时查找的动态链接库路径
http://blog.csdn.net/tsxw24/article/details/10220735 c/c++编译时,指定程序运行时查找的动态链接库路径 分类: c/c++ linux 2013 ...
- javaweb-servlet获取给定文件在服务器上的绝对路径的方法
1.通过ServletContext获取 在tomcat5,6,7版本中我们可以通过ServletContext来获取给定文件在服务器上的绝对路径. ServletContext context = ...
- java获取音频文件播放时长
方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...
- 双击jar文件运行程序
Java应用程序jar文件可以由 JVM(Java虚拟机)直接执行,只要操作系统安装了JVM便可以运行作为Java应用程序的jar文件.可是,很多朋友遇到一个难题,那就是下载了jar文件以后在Wind ...
- 动态获取jar文件的路径
下面专门封装了一个类来处理: import java.io.File; /** * 获取打包后jar的路径信息 * @author Administrator * 2011-01-16 13:53 ...
- Java中获取类的运行时结构
获取运行时类的完整结构 通过反射获取运行时类的完整结构 Field(属性).Method(方法).Constructor(构造器).Superclass(父类).Interface(接口).Annot ...
随机推荐
- 【LOJ6052】「雅礼集训 2017 Day11」DIV(杜教筛)
点此看题面 大致题意: 求\(1\sim n\)内所有满足\(a>0\)的约数\(a+bi\)的\(a\)之和. 解题思路 首先,我们设\(x=(a+bi)(c+di)(1\le x\le n) ...
- L2范数惩罚项,高维线性回归
%matplotlib inline import mxnet from mxnet import nd,autograd from mxnet import gluon,init from mxne ...
- [19/03/13-星期三] 数组_二维数组&冒泡排序&二分查找
一.二维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(我们一般使用容器代替,二维数组用的都很少). [代码示例] import ...
- maven之构建多模块maven工程
(一)环境搭建 1.Maven下载 ; http://maven.apache.org/download.cgi 第一个在Linux使用,第二个是在Windows,第三和第四是源码: 我们将下 ...
- <知识整理>2019清北学堂提高储备D3
全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是NOIP难题级别.先明确动态规划里的一些概念: 状态:可看做用动态规划求解问题时操作的对象. 边界条件 ...
- 查看flash的版本
查看当前浏览器的flash版本: http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf 针对谷歌浏览器 chr ...
- MVC学习四:Razor视图语法
@{ Layout = null; } <hr /> <!DOCTYPE html> @this.GetType().Assembly.Location.ToString() ...
- python 实现远程上传文件夹
python2 upload.py "ip" "root" "password" "22" "Only Pro ...
- web 切换多语言版本
1.Google 翻译 <div id="google_translate_element"></div> <script type="te ...
- 【SQL】Oracle的交集、并集、差集
假设有表tableA.tableB,他们都有字段id和name 交集:INTERSECT (适用于两个结果集) select a.id, a.name from tableA a INTERSECT ...