有没有办法获取正在运行的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
有没有办法做到这一点?
===== 编辑 =====
在这里得到解决方案
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 文件,因此这并非在所有情况下都有效(因此使用IllegalStateException
. 但是,您可以使用此技术定位包含该类的 JAR,并且您可以通过调用 代替 来获取类文件的内容,getResourceAsStream()
无论getResource()
该类是在文件系统上还是在 JAR 中,这都将起作用.