我正在尝试让我的安卓应用程序与我的GWT2.5.1(GWT2.5.1) WebProject进行通信。一般来说,我从代码的角度确定了这一点,但我总是遇到代码导入问题……
最初,当我尝试使用SyncProxy从安卓项目实例化RPCService和RPCServiceAsync类时,我会得到一个NoClassDefFoundError,它们是在web项目中定义的……尽管移动项目依赖于build-path中的web项目,但它没有将web项目代码导出到移动应用程序中。我认为这可能是因为GWT编译器实际上将东西转换为javascript,而不是构建jar,但不确定……
我继续将RPCService和RPCServiceAsync文件移动到andoird项目中,但将RPCServiceImpl保留在web项目中,并切换了依赖项(即web项目依赖于android one)……我现在不再获得NoClassDefFoundError,而是同步代理失败,它在类路径中找不到策略文件……这是因为策略文件驻留在web项目的WAR目录中...
在我看来,我的项目拆分不正确,我想知道最好的方法是什么?如何创建一个导出rpc策略文件和/或其java类的GWT应用程序?
thx
发布于 2013-12-03 16:41:31
首先,您的初始设置是正确的。最好是在web应用程序中定义服务接口,并从那里提取Android应用程序。我不确定您使用的是哪种集成开发环境,但在Eclipse中,您希望在Build Path对话框中使用的功能称为Link Source。使用此方法,您可以将构建路径直接指向web应用程序的服务接口,以便这些接口将与Android应用程序一起(而不是针对)进行编译。
作为一个简短的参考,看看SyncProxy项目中Android wiki的Eclipse部分中的设置:https://code.google.com/p/gwt-syncproxy/wiki/Android。也可以查看Common Issues wiki。https://code.google.com/p/gwt-syncproxy/wiki/CommonIssues
需要注意的是,它最终运行的方式并不是web应用程序将代码导出到Android项目。实际上,Android项目会将代码从GWT应用程序源代码路径导入到它自己的源代码层次结构中。
关于您收到的第二个错误,"lost“策略文件,请尝试在您的项目上运行GWT编译,并确保您的appengine-web.xml文件(如果使用GAE作为您的服务后端)已经按照wiki中的定义进行了修改(我只做了一些更新)。
最后,您可能会遇到另一个错误。由于您使用的是GWT2.5.1,如果您运行的不是最新版本的SPALibrary,则可能会遇到序列化问题。我现在正在检查测试的反馈,应该在几个小时内就可以在网站上下载该文件。如果在GWT2.5.1 ServiceImpl上运行,请确保使用0.4.1安卓库。
发布于 2015-04-02 16:49:10
我也错过了这个,但现在经过两天的调试。我对这一点比较清楚。
SyncProxy需要您拥有项目的完整代码(服务器端)。要做到这一点,您只需创建一个额外的类,该类将在其中触发SyncProxy。在这个类中,您应该导入所有需要的类和函数,这就是您需要服务器代码的原因。
并且您必须将在服务器端生成的"*.gwt.rpc“文件放到此项目的类路径中。
我想这对你解雇SyncProxy来说已经足够了。
https://stackoverflow.com/questions/20329876
复制相似问题