【发布时间】:2014-11-09 05:48:22
【问题描述】:
Java 类加载器加载它可以找到的第一个具有匹配名称的类。有没有办法以编程方式判断加载了哪个?
也就是说,我可以更改下面的 main 以告知加载了哪个 ClassLoaderTest(除了调用 test())吗?
echo "public class ClassLoaderTest { public static String test() { return \"1\"; } }" > ClassLoaderTest.java
javac ClassLoaderTest.java
mkdir one
mv ClassLoaderTest.class one
echo "public class ClassLoaderTest { public static String test() { return \"2\"; } }" > ClassLoaderTest.java
javac ClassLoaderTest.java
mkdir two
mv ClassLoaderTest.class two
echo "public class Main { public static void main(String[] _) { System.out.println(ClassLoaderTest.test()); } }" > Main.java
javac Main.java
java -classpath one:two:. Main
java -classpath two:one:. Main
这会根据类路径顺序输出1,然后是2。
【问题讨论】:
-
这个问题可能会有所帮助。 . . *.com/questions/227486/…
-
不清楚:是要查找类的源代码,还是直接查找该类是从哪个目录加载的?
标签: java classloader