问题标签 [wsgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
572 浏览

ant - 通过 EXEC 使用不同的 JDK 运行 ANT(APT/WSGEN 解决方法)

我希望这能找到一位具有同时使用不同 JDK 版本运行 ANT 经验的 ANT 构建大师!

我继承了一组相当古老的库和 ANT 构建文件,这些文件目前在 Java 6/7 下工作。在尝试使该系统现代化以利用 Java 8 或任何未来的 JDK 升级时,我一直在研究一种重构这些构建文件以使用 Java 8 的方法。

当前的构建系统具有以下特点:

  • 蚂蚁 1.7.0 和 Java 1.7.0_55
  • 通过 ANT APT 任务使用已弃用的 APT 工具
  • 通过 ANT WSGEN 任务使用 wsgen(jaxws 相关库)(例如 classname="com.sun.tools.ws.ant.WsGen")
  • 构建文件有效地混合了代码生成和编译来创建我们想要的输出。

APT 工具在 Java 1.7 中已被弃用,需要在 1.8 及更高版本中使用 JAVAC!

在尝试用 JAVAC 替换 APT 的用法时,我发现不仅该工具被删除,而且与 APT 工具相关的众多包/类/接口也被删除。我已经在多个问答中看到了这里讨论的这个主题,但是大多数提出的解决方案都不是初学者。

我确实发现的一个有希望的建议是将代码生成(APT 的使用)与编译(JAVAC)分开,以驻留在不同的 ANT 构建文件中。将构建文件分成“主”构建文件和“代码生成”构建文件后,这似乎工作得很好。

例子:

现在“codegen”片段是独立的,这让我可以:

  • 使用 Java 8 运行“主”ANT 构建文件。
  • 对于“codegen”部分,使用上面的 EXEC 来指定 ANT/JAVA 版本来生成 *.java 代码。

对于那些处于类似情况的人来说,好消息是这似乎对 APT 很有效。我将我的 JAVA_HOME & PATH 更改为指向 Java 8,它似乎工作正常(假设 APT 仅限于 *.java 源代码生成,没有编译)。

现在这是问题所在,我希望有人可能对此有所了解。我发现 APT 工具也被用来创建一个 ANT 构建文件(wsgen-build.xml)。所述文件定义了 WSGEN 任务,然后多次使用它:

与 APT 任务类似,“主”构建文件调用 EXEC 以运行具有适当参数的“旧”ANT,以在其工作的相同环境下调用此生成的构建文件。

在 Java 1.7 和 ANT 1.7.0 下,这可以正常工作。

当我将 Java 更改为 1.8 时,我将 JAVA_HOME 的 JDK 和“java.target”更改为 1.8,我收到以下神秘错误:

对我来说,这个问题“感觉”如下:

为什么运行 Java 8 的 ANT 会干扰运行 Java 7 的 ANT,如何解决?

一些问答让我想到了这个问题:

您是否尝试过使用 ANT -v -d 来解决这个问题? 是的,我正在基于用于“主”构建文件的 ${java.version} 生成一个日志文件。我为 Java 8 生成一个文件,为 Java 7 生成一个文件,并对两者进行区分。在我遇到上面提到的错误之前,两者(Java 7 与 Java 8)之间没有环境/属性/设置差异。加载的订单类有细微的变化,但就是这样。

当您在 Java 7 和 Java 8 之间进行更改时,您是否确保更改不会影响您的 EXEC 任务? 上面引用的日志文件的差异验证了这一点,但是当我调用 EXEC 时,上面第一个示例中的属性被有效地硬编码,使用 ENV 标记来确保环境变量也相同,无论使用的 Java 版本如何在“主”构建文件中。

肯定有一些环境变量差异导致了这个问题吗? 我正在记录许多试图诊断问题的变量。到目前为止,“codegen”ANT 构建文件的所有内容都相同,无论“main”ANT 是在 Java 7 还是 8 中运行:ANT_HOME、JAVA_HOME、PATH、ant.version、java.version、java.vm.version、 java.class.path,java.ext.dirs。详细的 ANT 日志也证明了这一点,它们之间没有属性/环境/类路径问题。

我无法从您的 EXEC 示例中看出,但是您使用的是完整路径吗?也许 PATH 变量是一个问题? 虽然未显示,但我指定了 ANT 和 JAVA 的完整路径,因为我需要准确指定 ANT/JDK 以确保运行所需的特定版本。

您如何使用有问题的 wsgen 任务 (wsgen-build.xml) 调用生成的构建文件? 根据上面的示例,“主”构建文件在“codegen”构建文件上调用 EXEC。唯一的区别是不同的构建目标,一个目标用于 APT,另一个用于 WSGEN 片段。在“codegen”构建文件中的上述 WSGEN 目标中,当前导入了 wsgen-build.xml,并通过 ANTCALL 调用了目标。我也试过只使用 ANT 任务,两者都有相同的结果。

您可以从命令外壳运行您的 EXEC 命令吗? 是的,如果我在命令行上运行该步骤,它是否有效取决于 Java 7 或 8 是否设置为 JAVA_HOME 并且首先出现在 PATH 中。例如,如果我将 JAVA_HOME 更新为 Java 8,则会收到以下错误:java.lang.NoClassDefFoundError: com/sun/mirror/apt/AnnotationProcessorFactory。这是正确的,因为该类不再存在于 Java 8 中(但确实存在于 7 中)。

您是否尝试过使用脚本或批处理文件而不是在 ANT 可执行文件上使用 EXEC? 是的,导致了同样的错误。我尝试使用一个简单的 .bat 文件来设置必要的环境变量并从 shell 调用命令。

您使用的是什么操作系统,您是否尝试过不同的机器/操作系统来查看这是否是特定于环境的? 我有一个 Win7 和一个 RHEL 7 环境,这个问题发生在两个环境中,我使用 osfamily 属性对每个平台的 EXEC 命令进行条件化。

Ant 1.7.0 已经很老了,你试过更新的 Ant 吗? 使用 Ant 1.9.4 也会出现同样的问题。1.9.4 Ant 仅针对“main”构建文件运行,“codegen”构建文件将使用 1.7.0,因为我通过 EXEC 任务明确设置了它。我确实尝试了 1.9.4,即使是“codegen”ant 构建文件,但它对错误没有任何影响。

如果您设法通读了全文,先生或女士,我向您致敬!感谢您提供的任何见解/建议!

0 投票
1 回答
658 浏览

java - WSGEN错误:编译失败,应该报错

我使用 CMD 中的这个命令,我刚刚收到这个“编译失败”错误。即使我使用详细选项。有什么问题?

C:\work\test\WSDLGenerator\target\classes>wsgen -cp。US.ESB.WebService.General.General_GetProducts -wsdl -verbose -Xnocompile

error:编译失败,应该报错

0 投票
1 回答
650 浏览

eclipse - 在 Rational Application Developer 中生成 JAX-WS 时命令行太长

我正在使用 IBM 的 RAD,它在大多数方面基本上都是日食。我们使用的是 9.5 版。我们之前使用向导生成了 Web 服务,但最近没有。自从我们升级到 9.5 后,我们认为不会。现在我们需要添加到我们的网络服务中,我们无法通过向导生成,因为它得到了错误

“wsgen 工具返回错误:命令行太长。”

无论我们在向导中选择何种选项组合,它似乎都会执行此操作。我已经看到一些关于 Maven 的 wsgen 在 2.3 中修复了这个问题,但没有使用 Maven。虽然 RAD 附带了一个 wsgen,但当我测试它的版本是 2.2.9 时。它们看起来足够接近,我猜它们都指的是 wsgen 的版本,而不是一些 Maven 变体。

但这导致了是否以及如何升级 RAD 中的 wsgen 的问题。我可以只下载 wsgen.exe 并覆盖它,还是比这更复杂?

0 投票
1 回答
24 浏览

cmd - CMD 命令:Conjuction [wsgen: wsdl 和 inlineScemas]

-inlineSchemas 此选项在生成的 wsdl 中生成内联模式。这必须与 -wsdl 选项一起使用。

以上几行是用 Oracle 文档“ https://docs.oracle.com/javase/9 ​​/tools/wsgen.htm#JSWOR739 ”编写的,

我的命令: wsgen -verbose -keep -cp 。net.example.services.Tryservice -wsdl-inlineSchemas

其中“net.example.services.Tryservice”是我的 java 项目的类文件的路径,wsdl 和 inlineSchemas 是生成 wsdl 的命令。

我是否正确结合了 wsdl 和 inlineSchemas 这两个命令?

谢谢 :)

0 投票
1 回答
209 浏览

java - Wsgen 命令在 Java Web Services Up and Running Book 中生成 NoClassDefFoundError 错误

正如书中所说,我正在尝试运行命令:wsgen -cp . ch01.team.Teams 在包含 .class 文件的文件夹中,但它会引发下一个错误:

顺便说一句,我已经阅读了以下问题:wsgen raise NoClassDefFoundError exceptions and their answer,但它不起作用。

任何人都可以帮助我吗?

注意:我正在使用 Eclipse Juno,并且我已经在为我自己的 .class 文件生成的 src 文件夹中运行了该命令,并且我已经在 Eclipse 具有已编译的 .java 文件的 .class 文件的 bin 文件夹中运行了该命令。

0 投票
1 回答
685 浏览

cxf - 在 java-11 中工作的 CXF-SOAP gradle-plugin?

我们有一个用 gradle 构建的 CXF-SOAP 服务,并试图将它从 java-8 迁移到 java-11。

是否有任何可用的 gradle 的 cxf-plugin 在 java-11 下工作?

或者任何在 java-11 下工作的 cxf/soap 应用程序的演示/示例当然也会有所帮助。