2016-09-03 2 views
1

Я разрабатываю REST-сервис с помощью underow + resteasy + ajckson, когда я запускаю это с помощью IDEA, все в порядке, но когда я создаю " жир-банку»с Gradle или мавена я получаю сообщение об ошибке во время GET запроса:org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Не удалось найти MessageBodyWriter для объекта ответа типа

org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: не удалось найти MessageBodyWriter для объекта ответа типа на org.jboss.resteasy. core.ServerResponseWriter.writeNomapResponse (ServerResponseWriter.java:67) по адресу org.jboss.resteasy.core.SynchronousDispatcher.writeResponse (Synchro nousDispatcher.java:448) на org.jboss.resteasy.core.SynchronousDispatcher.invoke (SynchronousDispatcher.java:397) на org.jboss.resteasy.core.SynchronousDispatcher.invoke (SynchronousDispatcher.java:200) на org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service (ServletContainerDispatcher.java:220) на org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:56) на org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service (HttpServletDispatcher.java:51) на javax.servlet.http.HttpServlet.service (HttpServlet.java:790)

Я мог бы создать банку без ошибок с помощью gradle build и отладить мой сервис в IDEA.

Мой Gradle файл:

apply plugin: 'application' 
apply plugin: 'java' 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

mainClassName = 'example.json.RestServer' 

jar { 
    manifest { 
     attributes 'Implementation-Title': 'Rest-server', 
       'Implementation-Version': '0.1', 
       'Main-Class': 'example.json.RestServer' 
    } 
    from { 
     configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } 
    } 
} 

repositories { 
    jcenter() 
} 

dependencies { 
    compile 'io.undertow:undertow-core:1.4.0.Final' 
    compile 'io.undertow:undertow-servlet:1.4.0.Final' 

    compile 'org.jboss.resteasy:jaxrs-api:3.0.12.Final' 
    compile 'org.jboss.resteasy:resteasy-undertow:3.0.12.Final' 
    compile 'org.jboss.resteasy:resteasy-jackson-provider:3.0.12.Final' 

    testCompile 'junit:junit:4.12' 
} 

Мой источник:

@Path("calculator") 
public class Calculator { 
    @GET 
    @Path("squareRoot") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response squareRoot(@QueryParam("input") double input){ 
     Result result = new Result("Square Root"); 
     result.setInput(input); 
     result.setOutput(Math.sqrt(result.getInput())); 
     return Response.status(200).entity(result).build(); 
    } 

ответ

0

Попробуйте изменить свой последний код Спинет, как показано ниже, потому что анонимный GenericEntity подкласс обязан предоставить достоверную информацию о типе (в противном случае стирается компилятором) для писателя. более

@Path("calculator") 
    public class Calculator { 
     @GET 
     @Path("squareRoot") 
     @Produces(MediaType.APPLICATION_JSON) 
     public Response squareRoot(@QueryParam("input") double input){ 
      Result result = new Result("Square Root"); 
      result.setInput(input); 
      result.setOutput(Math.sqrt(result.getInput())); 
    return Response.ok(
      new GenericEntity<Result >(result) 
      ) 
     } 

объяснение здесь JAX-RS NoMessageBodyWriterFoundFailure

+0

Все код ОК WithMy, у меня есть ошибка с созданием Jar-файл, но я не мог найти, где – mystdeim