在部署SpringBoot项目中,可以通过多个方式来获取运行时的JAR包所在的路径。如可以使用ProtectionDomain
,这种方法可以获取类所在的JAR文件路径:
import java.io.File;
import java.net.URISyntaxException;
public class JarLocationUtil {
public static void main(String[] args) {
try {
File jarFile = new File(JarLocationUtil.class.getProtectionDomain().getCodeSource().getLocation().toURI());
String jarPath = jarFile.getAbsolutePath();
System.out.println("JAR 文件路径: " + jarPath);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
或者是还可以通过使用 ApplicationHome 类。SpringBoot提供了ApplicationHome 类,可以很轻松的获取到JAR文件路径:
import org.springframework.boot.system.ApplicationHome;
public class JarLocationUtil {
public static void main(String[] args) {
ApplicationHome home = new ApplicationHome(JarLocationUtil.class);
File jarFile = home.getSource();
String jarPath = jarFile.getAbsolutePath();
System.out.println("JAR 文件路径: " + jarPath);
}
}
使用Java NIO,这是一种利用 Path 和 URI 类来获取 JAR 文件路径的方法:
import java.nio.file.Path;
import java.nio.file.Paths;
public class JarLocationUtil {
public static void main(String[] args) {
Path path = Paths.get(JarLocationUtil.class.getProtectionDomain().getCodeSource().getLocation().getPath());
String jarPath = path.toAbsolutePath().toString();
System.out.println("JAR 文件路径: " + jarPath);
}
}
以上就是华纳云分享的全部方式,都可以在Spring Boot项目中使用,只要使用其中一种即可。更推荐的是ApplicationHome 类,这是Spring Boot提供的工具类,所以使用起来会更方便。