【发布时间】:2013-01-03 23:44:28
【问题描述】:
我遇到了这个错误:
[DEBUG] [testgwt] - Rebinding org.stofkat.testgwt.client.GetTestsService
[INFO] [testgwt] - Module testgwt has been loaded
[ERROR] [testgwt] - Errors in 'generated://CB9089E742875E64C1F5E08E3E60A8B5 /org/stofkat/testgwt/shared/TestsWrapper_FieldSerializer.java'
[ERROR] [testgwt] - Line 9: The type TestsWrapper_FieldSerializer must implement the inherited abstract method TypeHandler.serial(SerializationStreamWriter, Object)
[ERROR] [testgwt] - Line 9: The type TestsWrapper_FieldSerializer must implement the inherited abstract method TypeHandler.deserial(SerializationStreamReader, Object)
[ERROR] [testgwt] - Line 36: Type mismatch: cannot convert from TestsWrapper to Object
[ERROR] [testgwt] - Line 40: Cannot cast from Object to TestsWrapper
[ERROR] [testgwt] - Line 44: Cannot cast from Object to TestsWrapper
[INFO] [testgwt] - See snapshot: C:\Users\Leejjon\AppData\Local\Temp\org.stofkat.testgwt.shared.TestsWrapper_FieldSerializer4210265464022362123.java
我已经设法在两个 Java 项目 here 中隔离了问题(只需在 Eclipse 上将项目作为 GWT Web 应用程序运行,然后按下页面上的按钮)。
我正在尝试使用 libgdx 创建一个游戏,其中可以将关卡从 XML 文件加载到 POJO 中。然后我将 POJO 传递给引擎,它会显示关卡。我正在使用 SimpleXML 进行 XML 解析,因为该库适用于 Android 和桌面 Java。但是我不能在游戏的 GWT (HTML5) 版本中使用它,因为 SimpleXML 框架使用来自 java.io 的类。 (这是不允许的,因为 GWT 客户端的 Java 代码被编译成 javascript,并且不允许简单地从文件系统上的任何文件中读取内容)。所以我现在将 XML 文件加载到 GWT 服务器上的 POJO 中,并尝试使用 RPC 将其传递给客户端。
POJO 类将位于桌面 (LWJGL)、Android 和 HTML5 (GWT) 版本正在使用的 Java 项目中,因此 POJO 类无法实现 IsSerializable,因为 GWT jar 不能在其中项目。所以我按照格伦在this other stackoverflow topic 中的回答为每个POJO 制作了一个包装类,它扩展了原始POJO 并实现了IsSerializable。
请帮助我验证这是 GWT 中的错误还是我做错了。
【问题讨论】:
标签: java gwt serialization