记录下,备忘。
很多时候我们想知道正在执行的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/;