2012-11-01 52 views
10

是否可以創建註釋(或其他方式)來強制GWT編譯器不編譯方法?我有一個我也在應用程序引擎上使用的類(在一個共享文件夾中),其中的一個方法需要服務器端唯一的函數,導致GWT不能編譯。我想讓GWT忽略這個方法(而appengine不會)。GWT編譯器忽略方法的註釋

我想出了一個註釋,或者是一個預編譯腳本,在編譯之前擦除該方法。這兩種方法都適用於我,如果我仍然可以通過eclipse IDE進行編譯,那最好。

其他人想過這個還是試過了?

回答

12

直到現在。最近,這樣的註釋添加了@com.google.gwt.core.shared.GwtIncompatible("Description why...")。它適用於類或方法。

但修補後的代碼還沒有發佈!官方身份是FixedNotReleased。我可以親自確認,它不在當前的GWT 2.5.1版本中。我希望即將到來的2.5.2。

參見:

http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/core/shared/GwtIncompatible.java?spec=svn11570&r=11570

http://code.google.com/p/google-web-toolkit/issues/detail?id=3769

https://gwt-review.googlesource.com/#/c/2320/

注意,已經有類似標註com.google.gwt.thirdparty.guava.common.annotations.GwtIncompatiblegwt-dev.jar,但是 這是行不通的,編譯器仍然希望編譯我在共享類中不兼容方法。

+1

這是GWT 2.6正式版:https://docs.google.com/document/d/1ZdMwcTjc4rkWg6nntCY1BDB1xI2PHPwaCnTYw-9uAKE/edit –

+0

@GwtIncompatible是GWT 2.8.x的一部分(它有一個穩定的版本,甚至可能是更早的版本) – xamde

7

在GWT版本2.6之前,沒有使GWT編譯器忽略方法的註釋。 GWT問題跟蹤器中有一個requests,顯然它計劃在2.6版本中發佈。

一個解決方法的方法是在一類自身的「攻擊」的方法,而忽略這個類在.gwt.xml文件:

<source path="gwtclient"> 
    <exclude name="AppEngineOnlyClass.java" /> 
    ... 
</source> 
... 

希望有點幫助。

乾杯,

+2

請注意'AppEngineOnlyClass'可以擴展'AppEngineAndGwtClass'來繼承對GWT和GAE都有效的所有內容。 –

+0

優秀點鮑里斯。 –