我遇到的问题是类加载器无法加载类路径中的xml文件。
下面的代码首先打印类路径中存在的文件。接下来应该打印我想要加载的特定xml文件的位置(hbase-site.xml,它存在于类路径中)。
System.out.println("Displaying Class Loader URLs:-");
URLClassLoader ucl = ((URLClassLoader)Thread.currentThread().getContextClassLoader());
for (URL url : ucl.getURLs()) {
System.out.println(url);
}
System.out.println("Reading hbase-site.xml from: " + ucl.getResource("hbase-site.xml"));
我得到的输出如下
Displaying Class Loader URLs:-
file:/D:/hbase-master/hbase-master/bin/
file:/D:/hbase-master/hbase-master/conf/hbase-site.xml
file:/C:/Program%20Files/Java/jdk1.8.0_51/lib/tools.jar
file:/D:/hbase-master/hbase-master/hbase-server/target/
Reading hbase-site.xml from: null
我可以看到hbase-site.xml正在类加载器URL列表中输出。
但是getResource()方法无法找到hbase-site.xml文件 - 它返回null。我希望它输出'file:/ D:/hbase-master/hbase-master/conf/hbase-site.xml'。我无法理解这一点。请帮助。
PS:
答案 0 :(得分:0)
getResource
方法需要"类路径相对名称"。检查