我与GWT的工作,我试图导出一个java类在JavaScript中使用在我的HTML。这是Java类我想用jsinterop导出为JavaScript。
package com.example.client;
import jsinterop.annotations.*;
@JsType(isNative = false, namespace = JsPackage.GLOBAL)
public class Foo {
public int x;
public int y;
public int sum() {
return x + y;
}
}
这是我在我的HTML的javascript
<script>
var foo = new Foo();
foo.x = 40;
foo.y = 2;
foo.sum();
</script>
我已经使用的编译参数和运行配置的-generateJsInteropExports标志。不过,我仍然得到这个错误:
未捕获的ReferenceError:foo是不MyProgramName.html定义:59(其中,i尝试初始化它线)
此外,使用默认的命名空间也不起作用。当我使用:
var foo = new com.example.client.Foo();
我犯了同样的错误。有什么建议么?
你记得给-generateJsInteropExports标志传递到编译器(和中超开发模式)?没有它,GWT,不出口类型的,因为这会增加输出尺寸。
(这个问题貌似How to access GWT's JsInterop exported types from browser console?的简化版本)
请记住,GWT代码异步启动(除非你使用自定义链接),所以它可能只是你要使用它的定义之前的对象。
作为测试,尝试把你的JS代码里面ansetTimeout
。
真正的解决将是要么使用自定义链接,或设置,你会从GWT的onModuleLoad
调用回调。