System.getProperty(“java.class.path”)和getClassLoader.getURLs()之间有什么区别?

时间:2013-09-05 01:35:57

标签: java

System.getProperty("java.class.path")返回程序的类路径。但是getClassLoader().getURLs()也为我提供了类路径(请参阅我的其他帖子:how to use getClassLoader

上述两种方式有什么区别?

3 个答案:

答案 0 :(得分:8)

主要区别在于他们的回报:

getClassLoader.getURLs()

返回用于加载类和资源的URL的搜索路径。这包括为构造函数指定的原始URL列表,以及随后由addURL()方法追加的任何URL,请参阅link

System.getProperty("java.class.path")

用于查找包含类文件的目录和JAR存档的路径。类路径的元素由path.separator属性中指定的特定于平台的字符分隔,请参阅link

看看定义,以下是不同之处:

  1. 第一个返回一个URL数组,而第二个返回一个String。
  2. 第一个也将使用API​​返回运行时附加的任何URL,第二个不会包含该。
  3. 当你必须决定选择哪一个时,它或多或少取决于你想要达到的目的。

    欢呼!!

答案 1 :(得分:3)

一个区别是没有'ClassLoader.getURL()'这样的方法。

您获取网址的ClassLoader(虽然不是您提到的方法,但不存在),可能不是系统类加载器。它可能是例如URLClassLoader,,它与类路径无关。

答案 2 :(得分:0)

黑暗中的一个镜头是ClassLoader需要类路径才能找到要加载的内容,getClassLoader()也调用本机方法,JVM可能直接抓取类路径并将其加载到类加载器中。

您以不同的方式访问相同的数据。