如何在纯Java环境中处理JSNI方法?

时间:2015-02-27 13:10:52

标签: java javascript gwt jsni

我使用以下GWT JSNI code,它应该在服务器和客户端使用的共享打包中使用:

public static native void alert(String msg) /*-{
  $wnd.alert(msg);
}-*/;


public void doSomething() {
   alert("test");
}

当编译为纯Java时,编译器对服务器上的代码做了什么?有没有办法提供纯Java版本的代码替代JSNI部分?

1 个答案:

答案 0 :(得分:1)

从JVM的角度来看,它们是native methods /*-{ … }-*/是一种特定于GWT的语法,从Java编译器的角度来看它只是一个注释。

因此,如果在JVM中调用,它将失败并显示UnsatisfiedLinkError

如果要为GWT和JVM提供特定实现,如果特定于JVM的代码可以转换为GWT,则使用GWT.isScript()(您可以尝试使用@GwtIncompatible进行注释,并查看是否有GWT抱怨),或者你可以使用超级来源;请参阅http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml

中的“覆盖一个包实现与另一个”