apt警告:找不到注释处理器

时间:2010-01-19 19:31:38

标签: java web-services annotations apt

我现在正在自学网络服务并尝试运行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?是否应该调用注释处理器?

更新:我关注的tutorial说:

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

1 个答案:

答案 0 :(得分:1)

apt不是编译器。它处理源文件并根据需要调用annotation processors

引用Getting Started...

  

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

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

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