在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. js面向对象 继承

    1.类的声明 2.生成实例 3.如何实现继承 4.继承的几种方式 1.类的声明有哪些方式 <script type="text/javascript"> //类的声明 ...

  2. Java从入门到放弃——01.Java 环境搭建

    本文目标: 下载与安装JDK 配置Java环境 1.JDK9下载:  下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jav ...

  3. 使用cmd命令进行运行java(cmd命令输出Hello word)

    使用cmd命令输出Hello word 条件,按照好jdk和jre的环境下,如果没有安装,请安装,简单安装教程链接:https://www.cnblogs.com/weibanggang/p/9392 ...

  4. 【luogu P3879 [TJOI2010]阅读理解】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3879 我先说一句: 我永远都喜欢StellaSTL 这个题,很明显就是 trie树 hash map+vec ...

  5. 深度优先搜索(深搜)——Deep First Search【例题:迷宫】

           深度优先搜索 基本思想:先选择一种可能情况向前探索,在探索过程中,一点那发现原来的选择是错误的,就退回一步重新选择,继续向前探索,(回溯)反复进行. [例题]迷宫问题           ...

  6. 用JS实现一个时钟的效果

    (效果图) 分两步进行的. 第一步:  要得到现在的 时 分 秒 但是这里面有一个小玄机 . 比如现在是 9点整      时针指向 9 是没错的 但是如果现在是 9点半   时针应该指向的是 9到1 ...

  7. linux命令进阶及和windows进行文件传输的所有方式

    1.图例 ------>原图出处 2. 结构图 根目录说明 3.linux相关命令 cd(change directory切换目录): cd /. 进入根目录 cd .. 返回上一次目录 cd ...

  8. 使用补丁破解IntelliJ IDEA 2017收费版本(转)

    1. 首先去官网http://www.jetbrains.com/idea/download/#section=windows下载Ultimate版(注意不是community版)下载并安装.一定要记 ...

  9. 【转】RMAN删除过期备份或非过期备份

    (一)删除备份--DELETE命令用于删除RMAN备份记录及相应的物理文件.当使用RMAN执行备份操作时,会在RMAN资料库(RMAN Repository)中生成RMAN备份记录,默认情况下RMAN ...

  10. 规避Javascript多人开发函数和变量重名问题

    函数和变量重名始终是一个令人头痛的问题,先讲变量吧,相信了解JS的朋友都知道,在JS中 是没有块级作用域的只有函数作用域,也就是说那些以大括号为界定符的代码块是管不住其中定义 的变量的作用域的,举例: ...