class.getResource("。" / * dot * /)有什么特别的含义吗?

时间:2014-06-19 13:12:19

标签: java classloader

有时我会在其他人的代码中看到这一点。但是当我尝试时,它会返回null。

baseUrl = org.company.UploadService.class.getResource(".");
url = new URL(baseUrl, "http://192.168.164.32:9080/mka-web/services/UploadService?wsdl");

2 个答案:

答案 0 :(得分:2)

UploadService.class.getResource(".")返回网址匹配类UploadServiece的包,例如

如果您从文件系统运行,请

file://your-path/org/company 要么 jar:file://yourjar-path/org/company如果你从jar运行。

您正在使用的URL构造函数返回给定上下文中的url。例如

new URL(new URL("http://google.com"), "yahoo.com")返回http://google.com/yahoo.com, 但 new URL(new URL("http://google.com"), "http://yahoo.com")返回http://yahoo.com,因为第二个网址是绝对的。

所以,我的情况下代码没有任何意义:它绝对是等同的 new URL("http://192.168.164.32:9080/mka-web/services/UploadService?wsdl")

答案 1 :(得分:2)

在某些情况下,

getResource(".")将返回指向类文件所在目录的URL。

This thread将行为描述为:

  

如果从目录加载类,则指向用于加载类的类路径中的目录的URL,或者从jar加载时为null。

最后一部分可能是你获得null的原因。另一个原因可能是:

  

它不适用于所有JVM