在.class文件没有被打包的情况下,如下语句可以获得.class文件的绝对路径:
String classFilePath = clazz.class.getResource("").getPath();
当.class文件被打进jar包之后,上面这条语句就要报错了。这时只能去获取.class文件所在的jar的绝对路径:
String classFilePath = clazz.class.getResource("/").getPath();
或者
String jarFilePath = clazz.class.getProtectionDomain().getCodeSource().getLocation().getFile();
// URL Decoding
jarFilePath = java.net.URLDecoder.decode(jarFilePath, "UTF-8");