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

JoJ*_*oJo 6 java

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

这两种方式有什么区别?

Sac*_*apa 8

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

getClassLoader.getURLs()
Run Code Online (Sandbox Code Playgroud)

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

System.getProperty("java.class.path")
Run Code Online (Sandbox Code Playgroud)

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

看看定义,这里有不同之处:

  1. 第一个返回一个URL数组,而第二个返回一个String.
  2. 第一个也将返回使用API​​在运行时附加的任何URL,第二个将不包括它.

或多或少取决于你必须决定选择哪一个时你想要达到的目标.

干杯!!

  • 'getClassLoader.getURL()'不是合法的Java,当你添加缺少的括号时,它不对应于ClassLoader的有效方法.看到OP正在谈论的内容很困难但并非不可能,但我不知道你在哪里获得有关这种不存在的方法的所有信息. (3认同)