Java GWT-Restygwt-Response不是有效的JSON文档

Java GWT-Restygwt-Response不是有效的JSON文档,java,json,gwt,resty-gwt,javax.ws.rs,Java,Json,Gwt,Resty Gwt,Javax.ws.rs,我想建立一个关于如何使用Restygwt的简单演示项目,以供学习。 我遵循了本教程: 到目前为止,我在我的客户身上得到了以下信息: 在我的SearchPresenter中,当我单击按钮时会触发方法searchBook(字符串isbn) @Override public void searchBook(String isbn) { clientContext.getBookStoreClient().getBook(isbn, new MethodCallback<List&

我想建立一个关于如何使用Restygwt的简单演示项目,以供学习。 我遵循了本教程: 到目前为止,我在我的客户身上得到了以下信息: 在我的SearchPresenter中,当我单击按钮时会触发方法searchBook(字符串isbn)

    @Override
public void searchBook(String isbn) {
    clientContext.getBookStoreClient().getBook(isbn, new MethodCallback<List<Book>>() {
        @Override
        public void onFailure(Method method, Throwable exception) {
            Window.alert("Failure");
            GWT.log(exception.getMessage());
            GWT.log(stackTraceToString(exception));


        }
        @Override
        public void onSuccess(Method method, List<Book> response) {
            for (Book book : response) {
                Window.alert(book.getIsbn() + " " + book.getAuthor());
            }
        }

    });
}

private String stackTraceToString(Throwable e) {
    StringBuilder sb = new StringBuilder();
    for (StackTraceElement element : e.getStackTrace()) {
        sb.append(element.toString());
        sb.append("\n");
    }
    return sb.toString();
}
但是,如果单击GUI上的按钮,我会跳入onFailure并获得异常:

响应不是有效的JSON文档

我的浏览器中显示了以下内容

[{"isbn":"1","author":"Max Mustermann"},{"isbn":"2","author":"Erika mustermann"}]
我是否错过了什么,或者在RestService的实现上搞砸了?
提前感谢您的评论,您的帮助是一个特别的您的问题是,当您单击一个按钮时会发生错误,并且该按钮会按isbn进行搜索-它不会像您在浏览器中测试的那样调用
GET/api/bookstore/books
。它实际上就是这样做的:

@GET
@Path("/{isbn}")
public void getBook(@PathParam("isbn") String isbn, MethodCallback<List<Book>> callback);

返回一本书,不包含在列表中。这可能是您的错误来源。

您的问题是,当您单击一个按钮时会发生错误,该按钮会按isbn进行搜索-它不会像您在浏览器中测试的那样调用
GET/api/bookstore/books
。它实际上就是这样做的:

@GET
@Path("/{isbn}")
public void getBook(@PathParam("isbn") String isbn, MethodCallback<List<Book>> callback);
返回一本书,不包含在列表中。这可能是您错误的根源

Unknown.Throwable_4_g$(GWT_Selenium-0.js@8:4312)
Unknown.Exception_4_g$(GWT_Selenium-0.js@18:4550)
Unknown.RuntimeException_4_g$(GWT_Selenium-0.js@18:4597)
Unknown.new ResponseFormatException_2_g$(GWT_Selenium-0.js@25:51000)
Unknown.parseResult_2_g$(GWT_Selenium-0.js@23:33367)
Unknown.parseResult_1_g$(GWT_Selenium-0.js@15:33355)
Unknown.onResponseReceived_0_g$(GWT_Selenium-0.js@27:33312)
Unknown.fireOnResponseReceived_0_g$(GWT_Selenium-0.js@17:14339)
Unknown.onReadyStateChange_0_g$(GWT_Selenium-0.js@28:14647)
Unknown.<anonymous>(GWT_Selenium-0.js@18:30998)
Unknown.apply_0_g$(GWT_Selenium-0.js@28:5498)
Unknown.entry0_0_g$(GWT_Selenium-0.js@16:5554)
Unknown.<anonymous>(GWT_Selenium-0.js@14:5534)
http://127.0.0.1:8888/api/bookstore/books
[{"isbn":"1","author":"Max Mustermann"},{"isbn":"2","author":"Erika mustermann"}]
@GET
@Path("/{isbn}")
public void getBook(@PathParam("isbn") String isbn, MethodCallback<List<Book>> callback);
@GET
@Path("/{isbn}")
@Produces("application/json")
public Book getBook(@PathParam("isbn") String isbn)