【问题标题】:Annotation for GWT compiler to ignore methodGWT 编译器忽略方法的注释
【发布时间】:2012-10-22 12:01:41
【问题描述】:

是否可以创建注释(或其他方式)来强制 GWT 编译器不编译方法?我有一个类,我也在应用程序引擎上使用(在共享文件夹中),其中一个方法需要一个仅服务器端的函数,这会导致 GWT 无法编译。我希望 GWT 忽略该方法(而 appengine 不会)。

我想出了一个注释,或者一个在编译之前擦除方法的预编译脚本。这两种方法都对我有用,如果我仍然可以通过 eclipse IDE 编译,那将是最好的。

还有其他人想过或尝试过吗?

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    直到现在。最近添加了这样的注释@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/

    注意,gwt-dev.jar 中已经有类似的注解com.google.gwt.thirdparty.guava.common.annotations.GwtIncompatible,但是 它不起作用,编译器仍然想在共享类中编译我的 incompatible 方法。

    【讨论】:

    • 这将在 GWT 2.6 中正式推出:docs.google.com/document/d/…
    • @GwtIncompatible 是 GWT 2.8.x 的一部分(它有一个稳定的版本,甚至可能是更早的版本)
    【解决方案2】:

    在 GWT 2.6 版之前,没有注释可以让 GWT 编译器忽略某个方法。在 GWT 问题跟踪器中有一个requests,显然它计划在 2.6 版本中发布。

    一种解决方法是在自己的类中包含“违规”方法,并在您的 .gwt.xml 文件中忽略该类:

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

    希望能有所帮助。

    干杯,

    【讨论】:

    • 请注意,AppEngineOnlyClass 可以扩展 AppEngineAndGwtClass 以继承对 GWT 和 GAE 都有效的所有内容。
    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 2019-03-14
    • 2012-11-20
    • 2016-05-22
    • 2019-05-02
    相关资源
    最近更新 更多