如何获取 class 的加载路径
How to get a path a class is loaded from
我想在类路径上列出 一些 类,但我不想要所有的(此外,扫描整个类路径非常慢)。给定一个 ExampleClass
,我想得到所有 类 驻留在同一个类路径条目(即目录或 JAR,其他情况可以忽略)。有一个 ClassLoader。
使用 ExampleClass.class.getResource("/")
不起作用,因为我总是获得第一个类路径条目,例如
/whatever/build/classes/main/
ExampleClass.class.getResource(".")
returns 正确条目的子项,例如
/whatever/build/classes/test/somepackage/ExampleClass.class
这是我可以处理的事情
/whatever/build/classes/test/
但我想知道是否有比玩弄字符串更好的方法。
这是一个例子:
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 url = ExampleClass.getProtectionDomain().getCodeSource().getLocation();
但是检查是否为空。
我想在类路径上列出 一些 类,但我不想要所有的(此外,扫描整个类路径非常慢)。给定一个 ExampleClass
,我想得到所有 类 驻留在同一个类路径条目(即目录或 JAR,其他情况可以忽略)。有一个 ClassLoader。
使用 ExampleClass.class.getResource("/")
不起作用,因为我总是获得第一个类路径条目,例如
/whatever/build/classes/main/
ExampleClass.class.getResource(".")
returns 正确条目的子项,例如
/whatever/build/classes/test/somepackage/ExampleClass.class
这是我可以处理的事情
/whatever/build/classes/test/
但我想知道是否有比玩弄字符串更好的方法。
这是一个例子:
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 url = ExampleClass.getProtectionDomain().getCodeSource().getLocation();
但是检查是否为空。