0

我遵循了http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/doc/helpInfo/jsoRestrictions.html上的所有建议,但仍然收到臭名昭著的<init>$错误。

以下语句触发错误:

final OpenCTM ctm = OpenCTM.create();

OpenCTM 在哪里:

public final class OpenCTM extends GObject {

    protected OpenCTM() {}

    public static native OpenCTM create() /*-{
        return new $wnd.GLGE.OpenCTM();
    }-*/;

    public native void setSrc(String url, String relativeTo) /*-{
        this.setSrc(url, relativeTo);
    }-*/;

}

整个代码位于我的GitHub 存储库中,并且仍然很小。我正在尝试为GLGE框架编写一个包装库。

我真的不知道该怎么办了。

4

2 回答 2

0

事实证明,该错误是后续错误,并且隐藏了根本原因。

解决方案是不时地实际编译整个事情,尽管理论上在开发模式下是不必要的。这导致:

Errors in 'file:/.../MaterialLayer.java'
       Line 90: missing formal parameter
> function (in) {
> ------------^

对应的Java代码是:

public native void setMapinput(int in) /*-{
    this.setMapinput(in);
}-*/;

作为inJS 中的保留字,这可能会导致一些后续问题。长话短说,我将参数更改为input并使其正常工作...

令人沮丧!

于 2012-09-07T19:20:44.347 回答
0

I am no expert. I avoided this problem by moving my extended JavaScriptObject class outside of my EntryPoint:onModuleLoad() implemention.

于 2016-12-04T15:24:01.937 回答