在 shared 包中,我有一个只使用 server 包中的类的类,只有当它在服务器上时,它才是GWT的独立,我有让它变得短暂
if (!GWT.isClient())
ServerLogger loggerServer;
但它没有编译,因为它是共享的..我可以在这里吗?我只想让GoogleCompile工作,它不应该具有服务器记录器的功能。 有解决方法吗?
如何编写我自己的整体为NULL的模块,因为我只想停止编译错误。
答案 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); }
}