【参考文章】:Java文件路径(getResource)
【参考文章】:关于java:如何获取正在运行的JAR文件的路径?
【参考文章】:关于Class.getResource和ClassLoader.getResource的路径问题
【参考文章】:java中File类的getPath(),getAbsolutePath(),getCanonicalPath()区别
【参考文章】:关于System.getProperty("user.dir")的研究
1. 代码示例
// 当前 jar包 或者 字节码文件 所在的路径 System.out.println( NativeCpp.class.getProtectionDomain().getCodeSource().getLocation().getPath()); // 输出:/E:/project/service_core/s17-blackbox/target/classes/ // classpath的目录 System.out.println( NativeCpp.class.getClassLoader().getResource("").getPath()); // 输出:/E:/project/service_core/s17-blackbox/target/classes/ // classpath的目录 System.out.println( NativeCpp.class.getResource("/").getPath()); // 输出:/E:/project/service_core/s17-blackbox/target/classes/ // 当前类(class)所在包(package)的目录 System.out.println( NativeCpp.class.getResource("").getPath()); // 输出:/E:/project/service_core/s17-blackbox/target/classes/com/streamax/s17/fms/business/jni/ // 执行 java -jar 命令的位置 System.out.println( System.getProperty("user.dir")); // 输出:E:projectservice_core // 执行 java -jar 命令的位置 System.out.println( new File("").getCanonicalPath()); // 输出:E:projectservice_core