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

Java 解决方法:没有类型可用的源您是否忘记继承所需的模块?,java,gwt,Java,Gwt,在共享包中,我有一个类,它只使用服务器包中的一个类,只有当它在服务器上时,它才是GWT的independent,并且我已经使它成为瞬态的 if (!GWT.isClient()) ServerLogger loggerServer; 但它不会编译,因为它是共享的。。我可以在这里搜索吗?我只是想让GoogleCompile正常工作,它不应该具有服务器记录器的功能。 有解决办法吗 如何编写我自己的整体为空的模块,因为我只想停止编译器出错。GWT仍在尝试编译此代码。您需要在编译时使用和交换所

在共享包中,我有一个类,它只使用服务器包中的一个类,只有当它在服务器上时,它才是GWT的independent,并且我已经使它成为瞬态的

if (!GWT.isClient())
    ServerLogger loggerServer;
但它不会编译,因为它是共享的。。我可以在这里搜索吗?我只是想让GoogleCompile正常工作,它不应该具有服务器记录器的功能。 有解决办法吗


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

GWT仍在尝试编译此代码。您需要在编译时使用和交换所需的实现,这样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); }
}