在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文件运行时所处的路径的更多相关文章

  1. maven打包可执行jar文件运行报错

    起因 项目中同时依赖了Spring和MyBatis,并使用mybatis-spring集成MyBatis和Spring. 使用maven打包为可执行jar文件运行,打包插件为:maven-shade- ...

  2. C# 获取媒体文件播放时长

    引用: Interop.Shell32.dll 方法: /// <summary> /// 获取媒体文件播放时长 /// </summary> /// <param na ...

  3. c#获取Amr文件的时长(毫秒)亲测有效

    /// <summary> /// c#获取Amr文件的时长(毫秒) /// </summary> /// <param name="fileName" ...

  4. c/c++编译时,指定程序运行时查找的动态链接库路径

    http://blog.csdn.net/tsxw24/article/details/10220735 c/c++编译时,指定程序运行时查找的动态链接库路径 分类: c/c++ linux 2013 ...

  5. javaweb-servlet获取给定文件在服务器上的绝对路径的方法

    1.通过ServletContext获取 在tomcat5,6,7版本中我们可以通过ServletContext来获取给定文件在服务器上的绝对路径. ServletContext context = ...

  6. java获取音频文件播放时长

    方法一: 在项目开发过程中,需要获取音视频文件时长.查询资料后发现 JAVE能够完美得到想要的结果,JAVE项目简介如下: The JAVE (Java Audio Video Encoder) li ...

  7. 双击jar文件运行程序

    Java应用程序jar文件可以由 JVM(Java虚拟机)直接执行,只要操作系统安装了JVM便可以运行作为Java应用程序的jar文件.可是,很多朋友遇到一个难题,那就是下载了jar文件以后在Wind ...

  8. 动态获取jar文件的路径

    下面专门封装了一个类来处理: import  java.io.File; /** * 获取打包后jar的路径信息 * @author Administrator *  2011-01-16 13:53 ...

  9. Java中获取类的运行时结构

    获取运行时类的完整结构 通过反射获取运行时类的完整结构 Field(属性).Method(方法).Constructor(构造器).Superclass(父类).Interface(接口).Annot ...

随机推荐

  1. 【LOJ6052】「雅礼集训 2017 Day11」DIV(杜教筛)

    点此看题面 大致题意: 求\(1\sim n\)内所有满足\(a>0\)的约数\(a+bi\)的\(a\)之和. 解题思路 首先,我们设\(x=(a+bi)(c+di)(1\le x\le n) ...

  2. L2范数惩罚项,高维线性回归

    %matplotlib inline import mxnet from mxnet import nd,autograd from mxnet import gluon,init from mxne ...

  3. [19/03/13-星期三] 数组_二维数组&冒泡排序&二分查找

    一.二维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(我们一般使用容器代替,二维数组用的都很少). [代码示例] import ...

  4. maven之构建多模块maven工程

    (一)环境搭建 1.Maven下载   ;   http://maven.apache.org/download.cgi 第一个在Linux使用,第二个是在Windows,第三和第四是源码: 我们将下 ...

  5. <知识整理>2019清北学堂提高储备D3

    全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是NOIP难题级别.先明确动态规划里的一些概念: 状态:可看做用动态规划求解问题时操作的对象. 边界条件 ...

  6. 查看flash的版本

    查看当前浏览器的flash版本: http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf 针对谷歌浏览器 chr ...

  7. MVC学习四:Razor视图语法

    @{ Layout = null; } <hr /> <!DOCTYPE html> @this.GetType().Assembly.Location.ToString() ...

  8. python 实现远程上传文件夹

    python2 upload.py "ip" "root" "password" "22" "Only Pro ...

  9. web 切换多语言版本

    1.Google 翻译 <div id="google_translate_element"></div> <script type="te ...

  10. 【SQL】Oracle的交集、并集、差集

    假设有表tableA.tableB,他们都有字段id和name 交集:INTERSECT (适用于两个结果集) select a.id, a.name from tableA a INTERSECT ...