同一服务器上的gwt getModuleBaseURL创建java.lang.UnsatifiedLinkError

同一服务器上的gwt getModuleBaseURL创建java.lang.UnsatifiedLinkError,gwt,spring-mvc,xmlhttprequest,Gwt,Spring Mvc,Xmlhttprequest,我有一个与Spring MVC集成的GWT web应用程序。我有一个工作正常的控制器,它工作正常,经过单元测试,可以接受发布的JSON数据并返回JSON数据 在同一个应用程序中,为了避免任何SOP跨站点域问题,我正在与RequestBuilder进行一次调用,以发布相同的json数据,我希望返回json数据 我创建了一个应该进行调用的基本java类,但我有几个问题。这个正在运行的web应用程序正在Eclipse的Jetty中以托管模式运行。我已经做了大量的研究,研究GWT应该如何通过一个简单的H

我有一个与Spring MVC集成的GWT web应用程序。我有一个工作正常的控制器,它工作正常,经过单元测试,可以接受发布的JSON数据并返回JSON数据

在同一个应用程序中,为了避免任何SOP跨站点域问题,我正在与RequestBuilder进行一次调用,以发布相同的json数据,我希望返回json数据

我创建了一个应该进行调用的基本java类,但我有几个问题。这个正在运行的web应用程序正在Eclipse的Jetty中以托管模式运行。我已经做了大量的研究,研究GWT应该如何通过一个简单的HTP请求调用现有的web服务

我的单元测试的第一个问题是:

String baseUrl = GWT.getModuleBaseURL();
不工作,我得到:

java.lang.UnsatisfiedLinkError: com.google.gwt.core.client.impl.Impl.getModuleBaseURL()Ljava/lang/String;
我想我知道正确的URL应该是什么,所以当我正确地硬编码URL并执行以下代码时:

    String url = getRootUrl() + "rest/pendingInvoices/searchAndCount";
    System.out.println("PendingInvoiceDataSource: getData: url=" + url);

    // Send request to server and catch any errors.
    RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, url);

    builder.setHeader("Accept", "application/json");
    builder.setHeader("Content-type", "application/json");

    // builder.setRequestData(requestData);

    try
    {
        System.out.println("PendingInvoiceDataSource: SEND REQUEST: getData: requestData=" + requestData);
        Request request = builder.sendRequest(requestData, new RequestCallback()
        {
            public void onError(Request request, Throwable exception)
            {
                System.out.println("Couldn't retrieve JSON");
            }

            @Override
            public void onResponseReceived(Request request, Response response)
            {
                if (200 == response.getStatusCode())
                {
                    // updateTable(JsonUtils.safeEval(response.getText()));
                    System.out.println("data=" + response.getText());
                }
                else
                {
                    System.out.println("Couldn't retrieve JSON (" + response.getStatusText() + ")");
                }
            }
        });
    }
    catch (RequestException e)
    {
        System.out.println("Couldn't retrieve JSON");
    }
我在发送请求时收到此错误:

java.lang.UnsatisfiedLinkError: com.google.gwt.xhr.client.XMLHttpRequest.create()Lcom/google/gwt/xhr/client/XMLHttpRequest;
at com.google.gwt.xhr.client.XMLHttpRequest.create(Native Method)
at com.google.gwt.http.client.RequestBuilder.doSend(RequestBuilder.java:383)
at com.google.gwt.http.client.RequestBuilder.sendRequest(RequestBuilder.java:261)

我认为这可能是一个快速解决方案,或者可能是一些我已经忘记的小问题,所以我将尝试更多的测试,看看能找到什么。

GWT中的所有
客户端
都只能在客户端运行:编译到JS或在DevMode中

服务器端只能使用
shared
server
vm

如果您想获取服务器URL,请使用
HttpServletRequest
中的适当方法(或者SpringMVC中的任何方法,从您如何标记所使用的问题中可以看出)


如果要从服务器发出HTTP请求,请使用
HttpURLConnection
,或类似的库,甚至。

GWT中的所有
client
都只在客户端运行:编译到JS或在DevMode中

服务器端只能使用
shared
server
vm

如果您想获取服务器URL,请使用
HttpServletRequest
中的适当方法(或者SpringMVC中的任何方法,从您如何标记所使用的问题中可以看出)


如果要从服务器发出HTTP请求,请使用
HttpURLConnection
,或类似的库,甚至。

实际上,只有单元测试有问题。一旦我真正尝试运行部署的代码,一切都正常了。为了让单元测试正常工作,我仍然会按照建议尝试h gwtestcase

但是当我运行部署的代码时,一切都正常工作

我还更改了:String baseUrl=GWT.getModuleBaseURL(); 这给了我:

             http://localhost:8888/MyProject
              http://localhost:8888/
To:String baseUrl=GWT.getHostPageBaseURL(); 这给了我:

             http://localhost:8888/MyProject
              http://localhost:8888/

实际上,只有单元测试有问题。一旦我真正尝试运行部署的代码,一切都正常了。为了让单元测试正常工作,我仍然会按照建议尝试h gwtestcase

但是当我运行部署的代码时,一切都正常工作

我还更改了:String baseUrl=GWT.getModuleBaseURL(); 这给了我:

             http://localhost:8888/MyProject
              http://localhost:8888/
To:String baseUrl=GWT.getHostPageBaseURL(); 这给了我:

             http://localhost:8888/MyProject
              http://localhost:8888/

这一切都成功了。

只能从应用程序的客户端访问
GWT
类。请确保不要从别处打电话给它。如果您这样做,您将得到
未满足链接错误
异常。确保单元测试类扩展了
GWTTestCase
()。
GWT
类只能从应用程序的客户端访问。请确保不要从别处打电话给它。如果您这样做,您将得到
未满足链接错误
异常。确保您的单元测试类扩展了
GWTTestCase
()。我使用了GWT客户机RequestBuilder,它工作得很好,但您是对的,我也可以使用Spring HTTP客户机。问题只是在单元测试中,当我实际部署代码时,它工作得很好;正如@Churro在上面的评论中指出的那样,您当时应该使用
GWTTestCase
。我使用了GWT客户端RequestBuilder,它工作得很好,但您是对的,我也可以使用Spring HTTP客户端。问题只是在单元测试中,当我实际部署代码时,它工作得很好;正如@Churro在上面的评论中指出的那样,您当时应该使用
GWTTestCase