我遵循了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 repository中,但仍然非常小。我正在尝试为GLGE框架编写一个包装器库。
我真的不知道该怎么做了。
答案 0 :(得分:0)
事实证明,该错误是后续错误,并隐藏了根本原因。
解决方案是实时编译整个事情,尽管在开发模式下理论上是不必要的。这导致:
Errors in 'file:/.../MaterialLayer.java'
Line 90: missing formal parameter
> function (in) {
> ------------^
相应的Java代码是:
public native void setMapinput(int in) /*-{
this.setMapinput(in);
}-*/;
由于in
是JS中的保留字,这可能会导致一些后续问题。简而言之,我将参数更改为input
并使其正常工作......
令人沮丧!
答案 1 :(得分:0)
我不是专家。我通过将我的扩展JavaScriptObject类移到了我的EntryPoint:onModuleLoad()实现之外来避免了这个问题。