从JSNI方法返回Java对象以外的东西

时间:2013-02-13 01:30:58

标签: java gwt errai

通过

运行errai-mvp-demo示例应用程序时
mvn gwt:run 

我收到此错误:

  

java.lang.IllegalArgumentException:Java对象以外的东西   从JSNI方法返回   '@ com.google.gwt.core.client.impl.Impl ::申请(Ljava /郎/对象; Ljava /郎/对象; Ljava /郎/对象;)':   boolean类型的JS值,期望java.lang.Object at   com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:178)at at   com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:271)     在   com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)     在com.google.gwt.core.client.impl.Impl.apply(Impl.java)at   com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)at at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:601)at   com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)     在   com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)     在   com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)     在   com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)     在   com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)     在   com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)     在   com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)     在   com.google.gwt.dev.shell.ModuleSpace.invokeNativeBoolean(ModuleSpace.java:184)     在   com.google.gwt.dev.shell.JavaScriptHost.invokeNativeBoolean(JavaScriptHost.java:35)     在   org.jboss.errai.common.client.util.LogUtil.isNativeJavaScriptLoggerSupported(LogUtil.java)     在org.jboss.errai.common.client.util.LogUtil.log(LogUtil.java:29)     在   org.jboss.errai.ioc.client.Container.boostrapContainer(Container.java:45)     在   org.jboss.errai.ioc.client.Container.onModuleLoad(Container.java:34)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:601)at   com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)at   com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)     在   com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)     在   com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)     在java.lang.Thread.run(Thread.java:722)

3 个答案:

答案 0 :(得分:1)

我假设您正在使用Chrome.This似乎是一个常见的问题。我有同样的问题,并切换到Firefox。我没有看到错误。

答案 1 :(得分:0)

如果您使用的是Chrome,那么。问题出在CHROME

根据 @Thomos Broyer 相对于Google群组中的相同问题:

https://groups.google.com/forum/?fromgroups=#!topic/google-web-toolkit/b0KbD8BNsqw

快速修复:从Chrome切换到适用于开发模式的Firefox

你可以在Stackoverflow上找到相同的问题。也可以查看question的答案。

答案 2 :(得分:0)

如果您收到IllegalArgumentException,只需在客户端模型或bean上进行一些更改。

当您使用其数据类型返回值时,只需提及包路径。

public native final Boolean apply() /*-{
 return this.apply ? @java.lang.Double::Boolean(D)(this.apply) : null;
 }-*/;