我有一个用JAX-RS注释注释的接口。 在实现类本身中,我只是重写了接口的方法。不覆盖注释或其他任何内容。
我收到以下错误: 类{name}是一个接口,无法实例化。
我尝试制作一个带有注释接口的jar并将其放在.war \ lib文件夹中,但错误仍然存在。
如果有关系,我正在使用JBoss的嵌入式Tomcat。
以下是界面:
@javax.ws.rs.Path( "/jerseytesting.HelloWorldService" )
public interface HelloWorldService {
@javax.ws.rs.POST
@javax.ws.rs.Path( "/Greet" )
@javax.ws.rs.Consumes({"application/protobuf", "application/json"})
@javax.ws.rs.Produces({"application/protobuf", "application/json"})
jerseytesting.Twirpproto.HelloResponse greet(jerseytesting.Twirpproto.HelloRequest request);
}
这是实现:
public class Twirpy implements Twirpproto.HelloWorldService {
@Override
public HelloResponse greet(HelloRequest request) {
HelloResponse helloResponse = HelloResponse.newBuilder().setResponse("Hello, " + request.getName()).build();
return helloResponse;
}
}
答案 0 :(得分:3)
来自API文档:
JAX-RS注释可用于以下方法和方法参数 一个超类或一个已实现的接口。
因此,只有方法注释可以在界面上。
具体类应具有@Path
。只有这样,JAX-RS才会知道创建该具体类的实例。
像这样:
@javax.ws.rs.Path( "/jerseytesting.HelloWorldService" )
public class Twirpy implements Twirpproto.HelloWorldService {
@Override
public HelloResponse greet(HelloRequest request) {
HelloResponse helloResponse = HelloResponse.newBuilder().setResponse("Hello, " + request.getName()).build();
return helloResponse;
}
}