1

我一直在尝试遵循JAX-WS Web Services 入门。我遇到了很多麻烦,因为 JDK 6 有 JAX-WS 2.1 但 METRO 有 JAX-WS 2.2 。因此,经过大量搜索,我发现了一个叫做“背书”的东西“存在。我尝试使用 apache,发现了 JAX-WS 冲突(参见 PS2 超链接 3)。现在我有一个包含 2 个 .jar 文件的认可文件夹:“C:\Program Files\Java\jdk1 .6.0_21\jre\lib\endorsed” 包含“jaxb-api.jar”和“jaxws-api.jar”。最后一切似乎都有效,但不幸的是只适用于“服务器应用程序”。经过大量搜索并一次又一次地将不同的文件复制到认可的文件夹中... ...我开始认为 Netbeans 有问题而不是我很愚蠢。所以我下载了一个 java 反编译器(参见 PS2 超链接 4),然后查看jar-files in the endorsed folder.顺便说一句,我在Netbeans中收到的错误是javax.xml.ws.Service也不包含以下构造函数:

protected Service(URL wsdlDocumentLocation, QName serviceName, WebServiceFeature[] features)

但只有以下构造函数:

protected Service(URL wsdlDocumentLocation, QName serviceName)

我在 netbeans 中设置了一个包含背书文件夹中的两个 jar 文件,但是当我展开它们并打开“服务”类时,不存在具有 3 个参数的构造函数。但是(这是奇怪的部分)当我在认可文件的 jar 文件“jaxws-api.jar”中反编译类服务时,它确实包含该构造函数。

那么netbeans不使用库引用的jar文件吗?或者发生了什么(更重要的是,我该如何解决)?

我通过“Service.class.getClassLoader()”检查了类的位置(从我不记得的地方粘贴):

System.out.println(System.getProperty("java.endorsed.dirs"));
final URL location;
final String classLocation = Service.class.getName().replace('.', '/') + ".class";
final ClassLoader loader = Service.class.getClassLoader();
if(loader == null){
    System.out.println("Cannot load the class");
}else{
    location = loader.getResource(classLocation);
    System.out.println("Class " + location);
}

但这给了我输出:“C:\Program Files\Java\jdk1.6.0_21\jre\lib\endorsed”和第二行“无法加载类”。因此,在运行时,它无法加载该类,但是当我将包含“认可的 jar 文件”的库扩展到它所在的 Service 类时,netbeans 会显示在 proyect->Libraries 的项目窗口中。当我打开它时,我没有收到错误,只是没有包含正确构造函数的文件

总结一下:我认为netbeans忽略了我告诉它使用的jar文件并在某处获取自己的jar文件,但没有向我显示......

PS:一些规格

产品版本:NetBeans IDE 7.0(内部版本 201104080000)Java:1.6.0_21;Java HotSpot(TM) 64 位服务器 VM 17.0-b17 系统:在 amd64 上运行的 Windows 7 版本 6.1;使用 Apache Tomcat 7.0.11 进行测试(我认为这没有任何用处)

希望解开这个谜,Tjen

PS2:我只能发布 2 个超链接,所以这里是第 3 和第 4 号(包括您自己的 http://):

3:weblogs.java.net/blog/ramapulavarthi/archive/2009/04/tip_for_using_j.html

4:java.decompiler.free.fr/?q=jdgui

4

0 回答 0