通过查看GWT示例应用程序和RPC教程,可以使用以下包约定:
./client/GreetingService.java
./client/GreetingServiceAsync.java
./server/GreetingServiceImpl.java
Run Code Online (Sandbox Code Playgroud)
尽管GWT文档在最佳实践方面非常稀疏,但在运行时将哪些组件包括在其中,但显而易见的直觉是:
这将导致一个相信该代码client应该不上的javac编译时源路径。然而,由于GreetingServiceImpl实现了GreetingService,显然client在编译过程中,代码必须位于源路径上,并在部署时包含在运行时类路径中。
鉴于此,为什么GreetingService接口不进入shared?
如果尝试将其放入shared,则GWT Eclipse插件会抱怨“缺少异步接口” ...
让我们尝试弄清楚:
Service接口必须对您的客户端代码可用。因此,它必须位于客户端软件包或共享软件包中。但是该ServiceAsync接口必须与该Service接口位于同一包中。而且ServiceAsync肯定不是被认为是共享客户端和服务器。因此,该ServiceASync接口应位于客户端软件包中。Service接口被放在客户端包中。ServiceASync在Service接口包中找不到该接口。这是否回答你的问题?