如何获取运行java程序的路径[duplicate]

这个问题在这里已经有答案了
查找从何处加载java类

(11个答案)

八年前关闭的

是否有一种方法可以获取正在运行的java程序的主类的路径

结构是

D:/
|---计划
|------垃圾箱
|------src

我想获取路径为D:\Project\bin\

我尝试了System.getProperty(“java.class.path”)但问题是,如果我像

java-classpath D:\Project\bin;D:\Project\src\Main
输出
获取:D:\Project\bin;D:\Project\src\
需要:D:\Project\bin

有没有办法做到这一点



====编辑======

在这里获得了解决方案

解决方案1(作者:Jon Skeet)

包foo;
公开课考试
{
公共静态void main(字符串[]args)
{
ClassLoader=Test.class.getClassLoader();
System.out.println(loader.getResource(“foo/Test.class”);
}
}

这张照片打印出来:

文件:/C:/Users/Jon/Test/foo/Test.class

解决方案2(埃里克森)

URL main=main.class.getResource(“main.class”);
if(!“file”.equalsIgnoreCase(main.getProtocol()))
抛出新的IllegalStateException(“主类未存储在文件中”);
文件路径=新文件(main.getPath());

请注意,大多数类文件都被组装到JAR文件中,因此这不会在所有情况下都起作用(因此出现了IllegalStateException)。但是,您可以使用此技术定位包含类的JAR,您可以通过调用getResourceAsStream()代替getResource(),来获取类文件的内容,无论该类是在文件系统上还是在JAR中,这都将起作用

使用

System.getProperty(“java.class.path”)

看http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

您还可以轻松地将其拆分为元素

String classpath=System.getProperty(“java.class.path”);
pathstring=pathstring.path;

发表评论