我现在正在自学网络服务并尝试运行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
答案 0 :(得分:1)
apt
不是编译器。它处理源文件并根据需要调用annotation processors。
命令行实用程序apt,注释处理工具,根据正在检查的指定源文件集中的注释查找并执行注释处理器。
您可以在源文件上运行apt,以便在构建时生成新的源文件或元数据文件。您可以运行apt
via javac
。
Java中的注释可以用于多种用途。并非所有这些都需要在构建时进行处理。有些用作标记,可以通过检测在加载时转换类。大多数只是在内省工具(如许多容器和依赖注入器)使用的运行时标记中使用。具体如何使用注释取决于它来自哪个API。 JEE5教程描述了how to use the WebService
annotation。