java - wsimport -clientjar 在(默认包)中生成类

标签 java web-services jar wsimport

我正在使用 -clientjar wsimport 参数将我的 WebService 导出到一个 jar 中。

>wsimport -d C:\webservice -keep -clientjar webservice.jar http://localhost:8080/WebService?wsdl

包含源代码(.java 文件)和 webservice.jar 的文件夹已创建。

jar 看起来像这样:

com
  |
  company
        |
        webservice
                 |
                 a bunch of .class files

META-INF
       |
       wsdl
          |
          wsdl file

但是,当我把它放在我项目的 WEB-INF/lib 文件夹中时,这些类在(默认包) 中并且被命名为

com\company\webservice\file.class

我不明白为什么。我还使用了 -p 参数来指定包名称,但它不起作用。

有什么线索吗?

最佳答案

有两种方法可以实现这一点,两者都很有效。 这两个选项都可以从你命名的 ant\gradle 中自动执行。

1.使用-clientjar然后重新打包源

2.手动将wsdl插入jar并自定义wsdLlocation URL

假设你有 C:\WSDL\SO\stas.wsdl (我是在windows上跑的)

CD  C:\WSDL\SO\

第一个选项

C:\WSDL\SO>wsimport -clientjar StasWebServiceClient.jar stas.wsdl

这会创建 StasWebServiceClient.jar jar 文件,但是当将其导入到 eclipse 时,由于主题问题(默认包),源无法导入。

=> 将 jar 文件解压到当前文件夹,你可以使用 7zip 或任何其他优秀的压缩工具,或者你可以运行

C:\WSDL\SO>jar xf StasWebServiceClient.jar

解压 jar 。

文件夹层次应该是这样的

C:\WSDL\SO\META-INF

C:\WSDL\SO\stas.wsdl(original wsdl)

C:\WSDL\SO\StasWebServiceClient.jar(generated jar file)

C:\WSDL\SO\META-INF\wsdl(created by -clientjar)

C:\WSDL\SO\META-INF\wsdl\stas.wsdl(copied by -clientjar)

C:\WSDL\SO\com\...

/* all generated classes\sources */

C:\WSDL\SO\com\...

=> 做

C:\WSDL\SO>jar -cvf StasWebServiceClientCorrect.jar com META-INF

这将创建另一个 jar,StasWebServiceClientCorrect.jar,它现在具有正确的包装。

第二个选项

=> 运行 wsimport

C:\WSDL\SO>wsimport -keep stas.wsdl

生成代码。我总是喜欢在那里有 -keep 选项,但这取决于你。

=> 创建 META-INF 文件夹

C:\WSDL\SO>mkdir META-INF

=> 创建 META-INF/wsdl 文件夹

C:\WSDL\SO>cd META-INF




C:\WSDL\SO\META-INF>mkdir wsdl

=> 向上移动一个文件夹。

C:\WSDL\SO\META-INF>cd ..

=> 将 stas.wsdl 文件复制到 META-INF\wsdl\stas.wsdl

C:\WSDL\SO>copy stas.wsdl META-INF\wsdl\stas.wsdl

=> 创建一个 jar 包

C:\WSDL\SO>jar -cvf StasWebServiceClient.jar com META-INF

将 jar 导入工作区。 当您要创建对服务的实际调用时,请使用:

StasService stasService = new  StasService(StasService.class.getClassLoader().getResource("META-INF/wsdl/stas.wsdl") )

关于java - wsimport -clientjar 在(默认包)中生成类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18967016/

相关文章:

java.net.UnknowHostException 与 ksoap2

java - HTTPCLIENT 不存在?网 bean

java - Wildfly 和 haproxy 之间的对话 - 无效的 PROXY 协议(protocol) header

java - Hybris 租户就像一个进程吗?

java - opencv 安装不在 java 中创建 jar 文件

java - 什么技术最适合以下场景?

java - 如何从 PHP 上的可运​​行 jar 获取输出

java - 如何使用 Jersey Rest Webservices 和 Java 解析 JSON 数组

java - 错误: could not load or find main class xyz

java - 如何将 java 程序包装到单个 exe 文件中,包括像 bouncycaSTLe 这样的签名 jar