2015-02-27 1 views
0

Я использую следующие GWT JSNI code, которые должны быть использованы в общей упаковано, используемый сервером и клиентом:Как методы JSNI обрабатываются в чистой среде Java?

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


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

Что компилятор делать с этим кодом на сервере, когда он компилируется в чистой Java? Есть ли способ предоставить чистую Java-версию кода альтернативу части JSNI?

+1

Поместите чистые реализации Java в свой общий пакет и супер-источник для GWT? –

ответ

1

С точки зрения JVM, это native methods.
/*-{ … }-*/ - это синтаксис, специфичный для GWT, с точки зрения компилятора Java это просто комментарий.

Итак, если вы вызвали в JVM, он завершится неудачно с UnsatisfiedLinkError.

Если вы хотите, чтобы обеспечить конкретные реализации для GWT против в JVM, либо использовать GWT.isScript() если JVM-специфический код переводимые на GWT (вы можете попробовать аннотирования его с @GwtIncompatible и посмотреть, если GWT жалуется), или вы можете использовать супер источник; см. «Перенастройка одной реализации пакета с другой» в http://www.gwtproject.org/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml