8

System.getProperty("java.class.path")返回我的程序的类路径。但是getClassLoader().getURLs()也为我提供了类路径(请参阅我的另一篇文章:如何使用 getClassLoader

上面提到的两种方式有什么区别?

4

3 回答 3

10

主要区别在于它们返回的内容:

getClassLoader.getURLs()

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

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

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

查看定义,以下是区别:

  1. 第一个返回一个 URL 数组,而第二个返回一个字符串。
  2. 第一个还将返回使用 API 在运行时附加的任何 URL,第二个将不包括该 URL。

当您必须决定选择哪一个时,或多或少取决于您要达到的目标。

干杯!!

于 2013-09-05T04:13:47.503 回答
2

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

您从中获取 URL(尽管不是通过ClassLoader您提到的方法,这是不存在的),可能不是系统类加载器。例如,它可能URLClassLoader,与类路径无关。

于 2013-09-05T03:05:46.540 回答
-1

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

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

于 2013-09-05T01:44:56.650 回答