时,找到了泽西岛异常的解决方案。
我正在尝试从类启动码头服务器。当我尝试从Eclipse运行它时,它可以正常工作。如果我将其嵌入到罐子中,则码头服务器启动,但是当我提出请求时,它会返回500代码响应。这是我的班级:
@GET
@Path("test")
@Produces(MediaType.APPLICATION_JSON)
public String echo(@QueryParam("testParam")String test){
return test;
}
private Server server;
public synchronized void start(int port) throws Exception {
if (server != null) {
throw new IllegalStateException("Server is already running");
}
ServletContextHandler context = new ServletContextHandler();
context.setContextPath("/");
Map<String,Object> initMap = new HashMap<String, Object>();
initMap.put("com.sun.jersey.api.json.POJOMappingFeature", "true");
initMap.put("com.sun.jersey.config.property.packages", "the.class.package");
context.addServlet(new ServletHolder(new ServletContainer(new PackagesResourceConfig(initMap))), "/*");
this.server = new Server(port);
this.server.setHandler(context);
this.server.start();
}
public static void main(String[] args) throws Exception {
if(args.length != 1) {
System.out.println("AnnotatorServer <port>");
System.exit(-1);
}
JettyServer server = new JettyServer();
server.start(Integer.parseInt(args[0]));
}
当我尝试启动嵌入在JAR中的服务器时,服务器开始,但是当我访问该方法时,我会得到以下例外:
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class java.lang.String, and Java type class java.lang.String, and MIME media type application/octet-stream was not found
您知道为什么会发生这种情况吗?谢谢!
问题在POM文件上。依赖项正在覆盖Meta-Inf/Service中的某些文件。只有在组装成单个JAR