这个问题在这里已经有答案了:
查找从何处加载java类
(11个答案)
(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;