NullPointerException使用RPC时发生错误 [英] NullPointerException Error when using RPC

查看:68
本文介绍了NullPointerException使用RPC时发生错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我现在正在使用rpc从数据库中提取数据,但是每当我单击按钮时,它的确会产生错误,并且总是触发我的 onFailure 命令.

I'm now currently extracting out data from my database using rpc, but whenever I click the button it does generates a error and my onFailure command is being triggered always.

下面是我的程序代码.

public class PleaseWork implements EntryPoint {
private TextBox textbox2 = new TextBox();
private Label Hi = new Label("New label");

@SuppressWarnings("deprecation")
public void onModuleLoad() {
    RootPanel rootPanel = RootPanel.get();

    Button btnNewButton = new Button("New button");

    btnNewButton.addClickListener(new ClickListener() {
        public void onClick(Widget event) {

            HelpConnectionAsync Abra =(HelpConnectionAsync) GWT.create(HelpConnection.class);
            ServiceDefTarget target = (ServiceDefTarget) Abra;
            String moduleRelativeURL = GWT.getModuleBaseURL() + "MySQLConnection";
            target.setServiceEntryPoint(moduleRelativeURL);

            AsyncCallback callback = new AsyncCallback(){

            public void onSuccess (Object result){
                textbox2.setText((String)result);
                Hi.setText("You Pass!");
            }
            public void onFailure(Throwable caught) {
                caught.printStackTrace();
                Hi.setText("You fail!");

            }
            };
            Abra.sensors(callback);
        }
    });

    rootPanel.add(btnNewButton, 23, 30);
    rootPanel.add(textbox2,23, 70);     
    rootPanel.add(Hi, 23, 130);
}

}

这既包含我的异步程序又包含服务程序

This consist of both my Async and Service program

public interface HelpConnection extends RemoteService {
public String[] sensors() throws Exception;}
public interface HelpConnectionAsync {
public void sensors(AsyncCallback<String[]> callback);}

这是我的服务器端程序

public class MySQLConnection extends RemoteServiceServlet implements HelpConnection {
private Connection conn = null;
private ResultSet rs = null;
private PreparedStatement pstmt = null;

public static Connection getConnection() throws Exception {
    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://localhost:3306/temperature";
    String username = "root";
    String password = "123456";
    Class.forName(driver);
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
  }

@Override
public String[] sensors() throws Exception {
    String [] user = null;
    try {
          conn = getConnection();

          rs = pstmt.executeQuery("SELECT ID, times FROM sensor ORDER BY id DESC LIMIT 1;");
          // extract data from the ResultSet
          while (rs.next()) {
            user = new String[] {rs.getString(1),rs.getString(2)};
          }
        } catch(SQLException e) {
          e.printStackTrace();
        } finally {
          try {
            rs.close();
            pstmt.close();
            conn.close();
          } catch (SQLException e) {
            e.printStackTrace();
          }
        }
        return user;
}}

最后这是控制台生成的代码

And lastly this is the code generated out by the console

java.lang.NullPointerException
    at com.google.gwt.user.client.rpc.core.java.lang.NullPointerException_FieldSerializer.instantiate(NullPointerException_FieldSerializer.java:16)
    at com.google.gwt.user.client.rpc.core.java.lang.NullPointerException_FieldSerializer.create(NullPointerException_FieldSerializer.java:25)
    at com.google.gwt.user.client.rpc.impl.SerializerBase.instantiate(SerializerBase.java:115)
    at com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader.deserialize(ClientSerializationStreamReader.java:396)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamReader.readObject(AbstractSerializationStreamReader.java:119)
    at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:216)
    at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258)
    at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)
    at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
    at java.lang.Thread.run(Unknown Source)

开发模式错误

[ERROR] Uncaught exception escaped

com.google.gwt.event.shared.UmbrellaException:捕获到异常:未在com.google.gwt的com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)中指定服务实现URLcom.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116)上com.google.gwt.user.client的.user.client.ui.Widget.fireEvent(Widget.java:129)com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)上的.ui.Widget.onBrowserEvent(Widget.java:177)com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307),位于sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法),位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源),位于java.lang.reflect.Method处,sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源).在com.com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)处com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处调用(Unknown Source).google.gwt.dev.shell.OophmSessionHandler.icom.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)上的nvoke(OophmSessionHandler.java:172)com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)上的nvoke(OrowmSessionHandler.java:172)在com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)在com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)在com.google.gwt.devcom.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)的com.google.gwt.core.client.impl.Impl.apply的.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)(Impl.java),位于com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242),位于sun.reflect.GeneratedMethodAccessor43.invoke(未知源),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知)来源)com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处的com.google.gwt.devcom.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)的com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer)的.shell.MethodDispatch.invoke(MethodDispatch.java:71).java:293)(位于com.google.gwt.dev.shell.BrowserChannelServer.java的com.google.gwt.dev.shell.BrowserChannelServer.java:547)(位于Java的com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)).lang.Thread.run(未知来源)由以下原因引起:com.google.gwt.user.client.rpc.ServiceDefTarget $ NoServiceEntryPointSpecifiedException:未在com.google.gwt.user.client.rpc.impl.RemoteServiceProxy中指定的服务实现URL.位于com.google.gwt.user.client.client.rpc.impl.RemoteServiceProxy.doInvoke(RemoteServiceProxy.java:368)的doPrepareRequestBuilderImpl(RemoteServiceProxy.java:430),位于com.google.gwt.user.client.client.rpc.impl.RemoteServiceProxy $com.mycompany.project.client.HelpConnection_Proxy.sensors(帮助中的ServiceHelper.finish(RemoteServiceProxy.java:74)com.mycompany.project.client.PleaseWork $ 1.onClick(PleaseWork.java:30)上的com.google.gwt.user.client.ui.ListenerWrapper $ WrappedClickListener.onClick(ListenerWrapper.java:245)上的Connection_Proxy.java:30))的com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1)的com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:56).com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)上com.google.web.bindery的google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1).com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)上com.google.g.event.shared.HandlerManager的event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193).com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)上的fireEvent(HandlerManager.java:127)com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent)上的fireEvent(Widget.java:129).java:116)com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177)在com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351)在com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307)在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源),位于com.google.gwt.dev上java.lang.reflect.Method.invoke(未知源)com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)的.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172),位于com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338),位于com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219).com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571)上的google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136))的com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)的com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279).com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)上的core.client.impl.Impl.apply(Impl.java),位于at.sun.reflect.GeneratedMethodAccessor43.invoke(未知源)com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)处java.lang.reflect.Method.invoke(未知源)处的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)上的.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)com.google.gwt.dev.shell.BrowserChannelServercom.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)的com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer的.reactToMessages(BrowserChannelServer.java:293).java:364),位于java.lang.Thread.run(未知来源)

com.google.gwt.event.shared.UmbrellaException: Exception caught: Service implementation URL not specified at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129) at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177) at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242) at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) at java.lang.Thread.run(Unknown Source) Caused by: com.google.gwt.user.client.rpc.ServiceDefTarget$NoServiceEntryPointSpecifiedException: Service implementation URL not specified at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doPrepareRequestBuilderImpl(RemoteServiceProxy.java:430) at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy.doInvoke(RemoteServiceProxy.java:368) at com.google.gwt.user.client.rpc.impl.RemoteServiceProxy$ServiceHelper.finish(RemoteServiceProxy.java:74) at com.mycompany.project.client.HelpConnection_Proxy.sensors(HelpConnection_Proxy.java:30) at com.mycompany.project.client.PleaseWork$1.onClick(PleaseWork.java:30) at com.google.gwt.user.client.ui.ListenerWrapper$WrappedClickListener.onClick(ListenerWrapper.java:245) at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:56) at com.google.gwt.event.dom.client.ClickEvent.dispatch(ClickEvent.java:1) at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1) at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40) at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193) at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88) at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127) at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129) at com.google.gwt.event.dom.client.DomEvent.fireNativeEvent(DomEvent.java:116) at com.google.gwt.user.client.ui.Widget.onBrowserEvent(Widget.java:177) at com.google.gwt.user.client.DOM.dispatchEventImpl(DOM.java:1351) at com.google.gwt.user.client.DOM.dispatchEvent(DOM.java:1307) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242) at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) at java.lang.Thread.run(Unknown Source)

基于更改返回用户以返回String [] {"text1","text2"}的另一种尝试在开发模式中再次产生了此错误,

Another attempt based on changing the return User to return String[] {"text1","text2"} There was this error genererated in the Developmentmode again,

[ERROR] Uncaught exception escaped

java.lang.ClassCastException:[Ljava.lang.String;无法在com.google.gwt.user.client.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter)处的com.mycompany.project.client.PleaseWork $ 1 $ 1.onSuccess(PleaseWork.java:40)处转换为java.lang.String.java:232),位于com.google.gwt.http.client.RequestBuilder $ 1.onReadyStateChange(RequestBuilder.java:412),位于com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258)Sun的.reflect.NativeMethodAccessorImpl.invoke0(本机方法)com的java.lang.reflect.Method.invoke(未知源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)的sun.reflect.NativeMethodAccessorImpl.invoke(未知源)com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)上的.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)在com.google.gwt.dev.shell上.OophmSessionHandler.invoke(OophmSessionHandler.java:172)位于com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServercom.google.gwt.dev.shell.BrowserChannelServer.invoke.java:338)com.com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)的Javascript(BrowserChannelServer.java:219).com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279)上com.google.gwt.dev.shell的google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571).com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242)位于sun.reflect.GeneratedMethodAccessor43.invoke(未知源),位于sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源),位于com.google.gwt.dev上java.lang.reflect.Method.invoke(未知源)com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)的.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)上的com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293).shell.BrowserChannelServer.run(BrowserChannelServer.java:364)在java.lang.Thread.run(未知来源)

java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String at com.mycompany.project.client.PleaseWork$1$1.onSuccess(PleaseWork.java:40) at com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:232) at com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:258) at com.google.gwt.http.client.RequestBuilder$1.onReadyStateChange(RequestBuilder.java:412) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:571) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:279) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91) at com.google.gwt.core.client.impl.Impl.apply(Impl.java) at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:242) at sun.reflect.GeneratedMethodAccessor43.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71) at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172) at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364) at java.lang.Thread.run(Unknown Source)

推荐答案

我从PleaseWork类中删除了ServiceDefTarget.它只是工作的基础,现在您只需要添加数据库处理即可.我也改变了回调的类型.现在对我有用(我删除了一些代码以减少代码量):

I removed the ServiceDefTarget from your PleaseWork class. It's just a base to work on, now you just have to add you database handling. Also i changed the type of the callback. It now works for me (I removed some code to reduce the amount of code ):

public void onModuleLoad() {
    RootPanel rootPanel = RootPanel.get();

    Button btnNewButton = new Button("New button");

    btnNewButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            HelpConnectionAsync Abra = (HelpConnectionAsync) GWT
                    .create(HelpConnection.class);

            AsyncCallback<String[]> callback = new AsyncCallback<String[]>() {

                public void onSuccess(String[] result) {
                    textbox2.setText(result[0]);
                    Hi.setText("You Pass!");
                }

                public void onFailure(Throwable caught) {
                    caught.printStackTrace();
                    Hi.setText("You fail!");

                }
            };
            Abra.sensors(callback);

        }
    });

在您的原始帖子中没有servlet映射,所以我添加了它:

In your original post there was no servlet mapping, so i added it :

@RemoteServiceRelativePath("Connection")
public interface HelpConnection extends RemoteService {
public String[] sensors() throws Exception;}

与asyn对应的对象:

And the asyn counterpart :

public interface HelpConnectionAsync {
public void sensors(AsyncCallback<String[]> callback);}

还有MySQLConnection的重要部分:

And the important part of the MySQLConnection :

@SuppressWarnings("serial")
public class MySQLConnection extends RemoteServiceServlet implements HelpConnection {


@Override
public String[] sensors() throws Exception {
String [] user = {"test"};
    return user;
}}

除了Java类,我还使用了以下web.xml(/war/WEB-INF/web.xml)

Besides the Java classes, i used the following web.xml ( /war/WEB-INF/web.xml )

    ....
     <!-- Servlets -->
  <servlet>
    <servlet-name>servletName</servlet-name>
    <servlet-class>src.server.MySQLConnection</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>servletName</servlet-name>
    <url-pattern>/helpconnection/Connection</url-pattern>
  </servlet-mapping>
  ...

我也无法拒绝将不推荐使用的ClickListener替换为不推荐使用的ClickListener.

Also i could not resist to replace the deprecated ClickListener with the not deprecated one.

这篇关于NullPointerException使用RPC时发生错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆