2010-01-19 81 views
2

我只是在教我自己关于web服务,并试图运行helloWorld。我认为要设置所有需要运行的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 + "!"; 
    } 
} 

奖金问题:什么是贴切呢?我认为它调用了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 

我认为这是容易应当以生产(假设我将它传递正确的参数)。不过,我认为我需要将它传递给一个注释处理器(?)。但我真的只想使用默认(Web服务注释处理器)。

更新2:也许我应该使用asant或wsgen?我看了,但我没有这两个在我的机器上..有东西可以看看..也许我正在使用的教程是错误的。下面是一个引用的链接:http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXWS3.html

回答

1

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

引述Getting Started...

该命令行实用程序贴切,注释处理工具,查找并执行被检查基于存在于该组中指定的源文件的注释的注解处理器。

您可能在源代码文件上运行apt以在构建时生成新的源文件或元数据文件。您可以运行aptvia javac

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