在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文件的完整路径