2

我现在只是在自学 Web 服务并尝试运行一个 helloWorld。我认为要设置我需要运行 apt 的所有 Web 服务。

我这样运行它:

apt HelloImpl.java -classpath /<path>/jsr181-api.jar

但我收到警告(见下文)。我是否也需要指定注释处理器?我认为 apt 命令应该生成几个文件,但这并没有发生(只是生成一个 .class 文件)。谢谢您的帮助。

警告:

warning: No annotation processors found but annotations present.
1 warning

代码:

package server;

import javax.jws.WebService;

@WebService
public class HelloImpl {

  /**
   * @param name
   * @return Say hello to the person.
   */
   public String sayHello(String name) {
     return "Hello, " + name + "!";
   }
}

额外问题:apt 做什么?我假设它调用javac?它还应该调用注释处理器吗?

更新:我正在关注的教程说:

The next step is to run apt on the above Java code, resulting in several artifacts:

HelloServiceImpl.wsdl
schema1.xsd
classes/server/HelloImpl.class
classes/server/jaxrpc/SayHello.class
classes/server/jaxrpc/SayHelloResponse.class
classes/server/jaxrpc/SayHello.java
classes/server/jaxrpc/SayHelloResponse.java

我认为这是 apt 应该产生的(假设我传递了正确的论点)。但是我认为我需要向它传递一个注释处理器(?)。不过,我真的只想使用默认的(Web 服务注释处理器)。

更新 2:也许我应该使用 asant 或 wsgen?我看了看,但我的机器上没有这些。。需要研究的东西。。也许我正在/正在使用的教程是错误的。这是指向 asant 参考的链接:http: //java.sun.com/webservices/docs/2.0/tutorial/doc/JAXWS3.html

4

1 回答 1

1

apt不是编译器。它处理源文件并酌情调用注释处理器

引用入门...

命令行实用程序 apt 是注释处理工具,它根据正在检查的指定源文件集中存在的注释查找并执行注释处理器。

您可以在源文件上运行 apt 以在构建时生成新的源文件或元数据文件。您可以apt 通过javac.

Java 中的注解可以用于多种用途。并非所有这些都需要在构建时进行处理。一些用作标记,可通过检测使用在加载时转换类。大多数仅用于内省工具(如许多容器和依赖注入器)可以使用的运行时标记。究竟如何使用注解取决于它来自的 API。JEE5 教程描述了如何使用WebService注解

于 2010-01-19T19:56:42.480 回答