简体   繁体   English

JSNI方法返回了Java对象以外的其他东西

[英]Something other than a Java object was returned from JSNI method

When running the errai-mvp-demo sample application via 通过运行errai-mvp-demo示例应用程序时

mvn gwt:run 

I get this error: 我收到此错误:

java.lang.IllegalArgumentException: Something other than a Java object was returned from JSNI method '@com.google.gwt.core.client.impl.Impl::apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)': JS value of type boolean, expected java.lang.Object at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:178) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:271) 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:213) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103) at com.google.gwt.dev.shell.Metho java.lang.IllegalArgumentException:JSNI方法'@ com.google.gwt.core.client.impl.Impl :: apply(Ljava / lang / Object; Ljava / lang / Object; Ljava / lang / Object;)':布尔值类型的JS值,com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:178)上的java.lang.Object期望com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)的com.google.gwt.core.client.impl.Impl.apply(Impl的.ModuleSpace.invokeNativeObject(ModuleSpace.java:271) .java),位于com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213),位于sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法),位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java) :57),位于com.google.gwt.dev.shell.MethodAdaptor.invoke(java.lang.reflect.Method.invoke(Method.java:601)处的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)处。网址为com.google.gwt.dev.shell.Metho的MethodAdaptor.java:103) dDispatch.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:337) at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218) at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136) at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561) at com.google.gwt.dev.shell.ModuleSpace.invokeNativeBoolean(ModuleSpace.java:184) at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeBoolean(JavaScriptHost.java:35) at org.jboss.errai.common.client.util.LogUtil.isNativeJavaScriptLoggerSupported(LogUtil.java) at org.jboss.errai.common.client.util.LogUtil.log(LogUtil.java:29) at org.jboss.errai.ioc.client.Container.boostrapContainer(Container.java:45) at org.jboss.errai.ioc.client.Container.onModuleLoad(Container.java:34) at sun.reflect.NativeMeth com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)的dDispatch.invoke(MethodDispatch.java:71) 337),com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218),com.google.gwt.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136),com.google.gwt com.google.gwt.dev.shell.ModuleSpace.invokeNativeBoolean(ModuleSpace.java:184)的.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)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.onModuleLoad(Container.java:34)的org.jboss.errai.ioc.client.Container.boostrapContainer(Container.java:45)在sun.reflect.NativeMeth odAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at 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) at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525) at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363) at java.lang.Thread.run(Thread.java:722) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)处的odAccessorImpl.invoke0(本机方法)在java.lang.reflect.Method.invoke(方法。 com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)的com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)的com.google.gwt.dev.shell。 .com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)上的.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)在java.lang.Thread.run(Thread.java :722)

I'm assuming you're working with Chrome.This seems to be a common problem with it. 我假设您正在使用Chrome。这似乎是一个常见问题。 I had the same issue and switched to Firefox. 我遇到了同样的问题,并切换到Firefox。 I haven't seen the error since. 从那以后我再也没有看到错误。

If you are using Chrome,YES.This issue is with CHROME happens . 如果您使用的是Chrome浏览器,是的。此问题发生在CHROME

According to @Thomos Broyer relative to the same issue on Google groups: 根据@Thomos Broyer相对于Google 网上论坛的同一问题:

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

Quick Fix : switch from Chrome to Firefox for Dev Mode 快速修复 :在开发模式下从Chrome切换到Firefox

And you can find the same question on Stackoverflow .See answer for that question also . 您可以在Stackoverflow上找到相同的问题。另请参见该问题的答案。

If you are getting IllegalArgumentException, just make a few changes on client side model or bean. 如果要获取IllegalArgumentException,只需对客户端模型或bean进行一些更改。

Just mention package path when you returning the value with his data type. 当返回带有他的数据类型的值时,只需提及包路径。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM