【问题标题】:Something other than a Java object was returned from JSNI method从 JSNI 方法返回的不是 Java 对象
【发布时间】:2015-02-26 19:02:51
【问题描述】:

通过运行errai-mvp-demo 示例应用程序时

mvn gwt:run 

我收到此错误:

java.lang.IllegalArgumentException:Java 对象以外的东西 从 JSNI 方法返回 '@com.google.gwt.core.client.impl.Impl::apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)': boolean 类型的 JS 值,预期 java.lang.Object 位于 com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:178) 在 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) 在 com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 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.BrowserChannelServer.processConnection(BrowserChannelServer.java:525) 在 com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363) 在 java.lang.Thread.run(Thread.java:722)

【问题讨论】:

    标签: java gwt errai


    【解决方案1】:

    我假设您正在使用 Chrome。这似乎是它的一个常见问题。我有同样的问题并切换到 Firefox。从那以后我就再也没有看到过这个错误。

    【讨论】:

    • 这个错误可能还有其他原因,但也有可能是您的 Firefox 版本非常新,而 DevMode 插件适用于较早的版本。在这种情况下,您可以通过更新插件或降级 Firefox 来修复它。
    【解决方案2】:

    如果您使用的是 Chrome,是的。此问题与 CHROME 发生。

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

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

    快速修复:从 Chrome 切换到 Firefox 开发模式

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

    【讨论】:

      【解决方案3】:

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

      当你返回带有他的数据类型的值时,只需提及包路径。

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

      【讨论】:

        猜你喜欢
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 2016-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多