class.getResource(“。”)返回null

时间:2011-12-06 11:02:49

标签: java web-services class getresource

我在Web服务客户端项目中使用wsimport来生成基于wsdl文件的工件类。我试图通过使用wsdlLocation属性在本地引用wsdl文件。生成的服务将尝试根据服务类所在的包的路径以及wsdlLocation属性的值创建URL。

问题是生成的服务类正在使用class.getResource(".")以获取当前目录(服务类所在的包/目录)的路径。如果应用程序打包在jar中(如我的情况),则此代码返回null。我注意到class.getResource(“”)实际上会返回正确的路径,但更改生成的代码似乎是一个丑陋的解决方案。我想知道是否有某种方法来设置类路径,以便前面的代码将返回生成的服务类所在的包/目录的路径(按预期)?

谢谢

3 个答案:

答案 0 :(得分:2)

您无法获取jar文件中目录的URL的原因是您在创建jar文件时忘记启用“添加目录条目”选项。

如果您使用eclipse创建jar文件,只需启用“添加目录条目”选项。

如果使用jdk jar命令,我认为默认情况下启用该选项。

不要使用常规的zip创建者,如WinZip,7zip或WinRar,因为我认为没有此选项。

答案 1 :(得分:0)

我建议您使用QName并将其作为您的财产,让您高枕无忧,因为您可以选择将wsdl更改为指向任何位置,以防您不想使用默认值基于相对路径的方法。

恕我直言,我没有看到任何改变生成代码的原因,但每次重新生成代码时都会导致更改的痛苦。

答案 2 :(得分:0)

您只需使用正斜杠“/”代替句点或点“。” 。 这是早期版本中的一个错误,但现在已经解决了。请查看以下链接以了解该错误。如果使用正斜杠没有帮助让我知道。 Bug