记录下,备忘。
很多时候我们想知道正在执行的class文件或者jar所在的路径,以方便加载一些资源。下面的一些方法可以帮助到我们:
1 System.out.println(System.getProperty("user.dir"));
2 System.out.println(XXX.class.getProtectionDomain().getCodeSource().getLocation());
3 System.out.println(XXX.class.getProtectionDomain().getCodeSource().getLocation().getPath());
4 System.out.println(XXX.class.getProtectionDomain().getCodeSource().getLocation().getFile());
如果是在jar中:
1是程序执行的根路径,通常都是项目的路径;
2是jar所在的地址的uri形式,类似这样的:file:/D:/中间是目录/jar包名.jar;
3和4都是jar的地址,类似这样的:/D:/中间是目录/jar包名.jar;
如果是没被打包的class:
1和jar的情况一样;
2是class文件所在的根路径的uri形式,不包含包路径,类似这样的:file:/D:/中间是目录/bin/;
3和4则去掉了2中的file:,类似这样:/D:/中间是目录/bin/;
本文介绍了在Java中获取当前程序或类文件运行路径的多种方法,并解释了这些方法在不同场景(如打包成jar与未打包的class文件)下的表现形式。

被折叠的 条评论
为什么被折叠?



