在Java中,你可以使用ProtectionDomain
和CodeSource
类来获取当前程序所在的路径。以下是一个示例方法,它会返回当前执行的Java程序的路径:
java复制代码
import java.security.CodeSource;
import java.security.ProtectionDomain;
public class Main {
public static void main(String[] args) {
System.out.println("当前程序所在路径: " + getCurrentPath());
}
public static String getCurrentPath() {
ProtectionDomain protectionDomain = Main.class.getProtectionDomain();
CodeSource codeSource = protectionDomain.getCodeSource();
if (codeSource != null) {
java.net.URL jarUrl = codeSource.getLocation();
try {
return jarUrl.toURI().getPath();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
请注意,这个方法返回的是你的.jar
文件或者.class
文件的路径,取决于你如何运行你的Java程序。如果你直接通过java Main
命令运行一个未打包的.class
文件,那么这个方法可能返回的是一个包含.class
文件的目录的路径。如果你的程序是从一个.jar
文件中运行的,那么它将返回.jar
文件的路径。
如果你想要获取运行Java程序的当前工作目录(即执行java
命令时所在的目录),你可以使用System.getProperty("user.dir")
,如下所示:
java复制代码
public static void main(String[] args) {
System.out.println("当前工作目录: " + System.getProperty("user.dir"));
}
这个方法将返回你运行Java命令的目录,无论你的.class
文件或.jar
文件位于何处。