2016-08-16 108 views
1

我一直在嘗試製作某個API,並且需要它以JSON格式顯示服務器上的方法結果。如果我嘗試簡單無法在apache tomcat服務器上顯示json格式的值

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("/messages") 
public class MessageResource { 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getMessages() { 
     return "Hello World!"; 
    } 

} 

它的工作原理,但是當我嘗試使用我的課,我JSON格式的返回值它顯示了服務器上的一些錯誤(這在普通的控制檯進行)。

我對此很陌生,希望我解釋得很好。

type Exception report 

message org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper 
    org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489) 
    org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
root cause 

org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper 
    org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:278) 
    org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:260) 
    org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:509) 
    org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:334) 
    org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
    org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) 
    org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) 
    org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) 
    org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
root cause 

java.lang.NoClassDefFoundError: org/codehaus/jackson/map/ObjectMapper 
    valendor.messenger.ReturnJson.main(ReturnJson.java:27) 
    sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    java.lang.reflect.Method.invoke(Unknown Source) 
    org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
    org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
    org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
    org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$VoidOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:143) 
    org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
    org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
    org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
    org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 
    org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) 
    org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
    org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
    org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
    org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
    org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
    org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
    org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) 
    org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) 
    org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) 
    org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) 
    org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) 
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.36 logs. 

那是錯誤

+0

你能分享你遇到的錯誤嗎?發佈堆棧跟蹤將幫助我們幫助您。 – nicholas79171

+0

@ nicholas79171編輯帖子 –

回答

0

顯然,作爲錯誤消息狀態,你缺少的org.codehaus.jackson.map.ObjectMapper類。您必須將jackson-mapper庫添加到您的課程路徑中,即添加到WEB-INF/lib文件夾中。

如果你使用Maven構建項目,添加以下依賴你pom.xml

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-lgpl</artifactId> 
    <version>1.9.13</version> 
</dependency> 

(用您要使用的一個版本,1.9.13是最新ATM)

+0

非常感謝!它現在有效 –

+0

@ValeandorDumbovitch你願意接受我的答案嗎?謝謝! –