有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何解决:没有类型可用的源代码。您是否忘记继承所需的模块?

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

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

但它不会编译,因为它是共享的。。我能进去吗?,我只是想让GoogleCompile工作,它不应该有服务器记录器的功能。 有解决办法吗

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


共 (1) 个答案

  1. # 1 楼答案

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