如何解决方法:没有可用于类型的源您是否忘记继承所需的模块?

时间:2012-03-13 15:39:43

标签: java gwt

shared 包中,我有一个只使用 server 包中的类的类,只有当它在服务器上时,它才是GWT的独立,我有让它变得短暂

if (!GWT.isClient())
    ServerLogger loggerServer;

但它没有编译,因为它是共享的..我可以在这里吗?我只想让GoogleCompile工作,它不应该具有服务器记录器的功能。 有解决方法吗?

如何编写我自己的整体为NULL的模块,因为我只想停止编译错误。

1 个答案:

答案 0 :(得分:2)

GWT仍在尝试编译此代码。您将需要使用Deferred Binding<super-source>在编译时交换所需的实现,以便GWT不会尝试编译此特定于服务器的代码。

或者ServerLogger实现是对此共享类的接口依赖,并在服务器/客户端中传递正确的实现:

// in your shared package

public class SharedClass {
  private final LoggingClass logging;
  public SharedClass(LoggingClass logging) {
    this.logging = logging;
  }

  public void log(String msg) {
    logging.log(msg);
  }
}

public interface LoggingClass {
  public void log(String msg);
}

// in your client package

public class ClientLogging implements LoggingClass {
  public void log(String msg) { GWT.log(msg); }
}

// in your server package

public class ServerLogging implements LoggingClass {
  public void log(String msg) { ServerLogger.log(msg); }
}