如何获取运行java程序的路径
2022-08-31 10:36:24
有没有办法得到正在运行的java程序的主类的路径。
结构为
D:/
|---Project
|------bin
|------src
我想将路径设置为 .D:\Project\bin\
我试过了,但问题是,如果我像这样运行System.getProperty("java.class.path");
java -classpath D:\Project\bin;D:\Project\src\ Main
Output
Getting : D:\Project\bin;D:\Project\src\
Want : D:\Project\bin
有什么办法可以做到这一点吗?
===== 编辑 =====
在此处获取解决方案
解决方案1(作者:Jon Skeet))
package foo;
public class Test
{
public static void main(String[] args)
{
ClassLoader loader = Test.class.getClassLoader();
System.out.println(loader.getResource("foo/Test.class"));
}
}
这打印出来:
file:/C:/Users/Jon/Test/foo/Test.class
URL main = Main.class.getResource("Main.class");
if (!"file".equalsIgnoreCase(main.getProtocol()))
throw new IllegalStateException("Main class is not stored in a file.");
File path = new File(main.getPath());
请注意,大多数类文件都组装成 JAR 文件,因此这并非在所有情况下都有效(因此 )。但是,您可以使用此技术找到包含该类的 JAR,并且可以通过替换 的调用来获取类文件的内容,无论该类是在文件系统上还是在 JAR 中,这都将起作用。IllegalStateException
getResourceAsStream()
getResource()