如何在JDK 7或6中使用javac替换弃用的wsgen或apt?

时间:2012-02-05 10:06:17

标签: jax-ws java-7 apt wsgen

当我使用wsgen或apt在JDK 7中使用命令生成Web服务工件时。

wsgen -s src -cp CLASS_PATH -d OUTPUT_DIRECTORY  com.sun.WebServiceSEI

显示以下警告消息

  

com.sun.mirror包中包含的apt工具及其关联的API自JDK 7以来已被弃用,并计划在下一个主要的JDK版本中删除。使用javac工具中提供的选项以及包javax.annotation.processing和javax.lang.model中包含的API来处理注释。

如何在不使用wsgen或apt删除此警告的情况下生成Web服务工件?

3 个答案:

答案 0 :(得分:2)

javac是替代品。他们在一段时间之前将一个可插入的注释处理系统添加到javac(JSR 269:Pluggable Annotation Processing API)中(我认为是Java 6)。您正在寻找的注释处理器位于jaxws-tools.jar(Metro download)。在类路径上拥有该jar之后,您应该能够使用-processor com.sun.tools.ws.processor.modeler.annotation.WebServiceAp选项运行javac。还有一个Ant任务com.sun.tools.ws.ant.AnnotationProcessingTask。他们在这里谈了一点http://jax-ws.java.net/nonav/2.2.6/docs/ch04.html#tools-annotation-processing但是没有真正解释它。也许所需的注释处理器附带JDK,但如果是这样,我找不到它。

答案 1 :(得分:1)

生成警告是因为WsgenTool类正在使用来自com.sun.mirror.apt包的类,这些类似乎在JDK7中已弃用。我想有一段时间JAX-WS团队将发布不使用此API的jaxws-ri,但它可能会发生在更接近JDK8发布的地方。

答案 2 :(得分:0)

我害怕,这是不可能的。您可以做的是切换回适合您的旧JDK,这是您最好的选择。