获取.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 ...
随机推荐
- set 和select 的区别
简单赋值是没有区别的
- Java中基本类型和引用类型(简单介绍)
8种基本类型 一.4种整型 byte 1字节 -128——127 short 2 字节 -32,768 —— 32,767 in ...
- Ubuntu连接上海大学校园网(ShuWlan-1x & Shu(For All))
1.连接Shu(For All):直接连接,打开网页后可能会自动弹出登录页面,也可能需要点击浏览器菜单栏下方的跳转按钮. 2.连接ShuWlan-1x配置注意点: 认证方式:Protected EAP ...
- Android学习笔记_16_添加多个Activity、参数传递、请求码和结果码使用
一.添加新的Activity步骤: 第一步:新建一个继承Activity的类,如:NewActivity public class NewActivity extends Activity { @Ov ...
- java和c通信相关的数据类型转换
利用socket进行网络传输的时候往往需要将int转换为bytes,将string转换为bytes以及一些其他类型的数据转换 java和c类型的区别: 变量类型 C中字节数 Java中字节数 int ...
- Java基础——数据结构总结
目的 : 加强类与对象的内存分配理解,加强操作能力.理解数据结构. 结构 : 数据元素之间的关系. 数据结构 : 带有结构的数据对象. 线性结构: 各数据元素之间的逻辑以用一个线性序列简单的表达出现. ...
- c#分析SQL语句
最近总结了c#一般的功能,然后自己在博文中写了很多东西.主要是在用途上面.能够解决一些问题.现在分各个组件和方向写完了.主要的内容写了demo,也写了自己的项目组件和模型. 最后一个SQL分析.其实在 ...
- ssm整合-错误4
严重: Servlet.service() for servlet [dispatcher] in context with path [/management] threw exception [R ...
- 如何在linux系统内用openssl 生成 过期的证书
需求:验证过期的证书在系统中不能使用. 问题:如何生成过期的证书呢? 解决方法:1.调整系统时间 2.生成证书 3.验证证书startdate 和 enddate 是否符合你的预期 1.调整系统时间 ...
- Co. - Microsoft - Windows - Tomcat、JDK、MySQL通过 Inno 集成为exe部署包
需求 客户设备为Windows系统,需要部署公司产品,因此将Tomcat.JDK.MySQL.Java.war 打包整合成exe文件,Windows下一键部署安装. 最佳实践 1.下载免安装的mysq ...