【发布时间】:2020-12-11 00:23:34
【问题描述】:
我遇到了需要使用ClassLoader的情况:
我有一个 XML 文件,它指定了 sql 的配置细节,我想将它加载到一个配置类中。第一步是将 XML 中的内容加载到 Inputstream 中。
public class Resources{
public static InputStream getResourceAsStream(String path){
InputStream resourceAsStream = Resources.class.getClassLoader().getResourceAsStream(path);
return resourceAsStream;
}
}
我只是模糊地知道什么是类加载器:它将类加载到 JVM 中。我完全不清楚为什么要在这里使用 classLoader。我们不能直接读取路径中的内容吗?我的猜测是,这可能与人们想要加载资源的时间有关。
【问题讨论】:
-
“路径”的一个问题是许多 Java 程序被设计为在 Internet 上使用(有点遗憾的是,由浏览器执行的 Java Applet 不再是一个东西了)。 “路径”可能不存在,资源可能位于其他人的服务器上。因此,如果您实际上是下载此文件而不是“读取路径”,则需要一点间接性。
-
只是跟进您的评论:如果我们有一些资源位于其他人的服务器中,我们应该如何指定类路径?
-
你没有。类加载器知道从哪里加载数据(包括类)。例如,在小程序的特定情况下,从 HTML 页面读取路径并在代码开始执行之前将其分配给类加载器。
标签: java