System.getProperty("java.class.path")
返回程序的类路径。但是getClassLoader().getURLs()
也为我提供了类路径(请参阅我的其他帖子:how to use getClassLoader)
上述两种方式有什么区别?
答案 0 :(得分:8)
主要区别在于他们的回报:
getClassLoader.getURLs()
返回用于加载类和资源的URL的搜索路径。这包括为构造函数指定的原始URL列表,以及随后由addURL()方法追加的任何URL,请参阅link
System.getProperty("java.class.path")
用于查找包含类文件的目录和JAR存档的路径。类路径的元素由path.separator属性中指定的特定于平台的字符分隔,请参阅link
看看定义,以下是不同之处:
当你必须决定选择哪一个时,它或多或少取决于你想要达到的目的。
欢呼!!
答案 1 :(得分:3)
一个区别是没有'ClassLoader.getURL()'这样的方法。
您获取网址的ClassLoader
(虽然不是您提到的方法,但不存在),可能不是系统类加载器。它可能是例如URLClassLoader,
,它与类路径无关。
答案 2 :(得分:0)
黑暗中的一个镜头是ClassLoader需要类路径才能找到要加载的内容,getClassLoader()也调用本机方法,JVM可能直接抓取类路径并将其加载到类加载器中。
您以不同的方式访问相同的数据。