我正在使用Eclipse版本:3.5.1,GWT 2.0.0,GAE 1.3.0,我正在尝试使用XStream 1.3.2将客户端和服务器端之间的Java对象“序列化”到xml。 GWT。
在服务器端,XStream可以正常运行。
在客户端,编译器抱怨它无法找到所使用的XStream类的源代码。我知道这是某种“引用”问题,GWT客户端类无法自动查找服务器类,但我明白为什么会这样,当我尝试使用各种文章和教程中描述的方法时,我会慢慢疯狂在GWT中使用第三方库。
它们都不起作用!
我的gwt.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.7.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.7.1/distro-source/core/src/gwt-module.dtd">
<module rename-to='bandmates'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<!-- Inherit the default GWT style sheet. You can change -->
<!-- the theme of your GWT application by uncommenting -->
<!-- any one of the following lines. -->
<inherits name='com.google.gwt.user.theme.standard.Standard' />
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<!-- Other module inherits -->
<!-- Specify the app entry point class. -->
<entry-point class='org.redboffin.bandmates.client.BandMates' />
</module>
我的Eclipse XStream库如下:
XStream
|__ Access rules : No rules defined
|__ Native library location: (None)
|__ xstream-1.3.2.jar [path to jar]
|__ Source Attachment: xstream-1.3.2-sources.jar [path to source jar]
|__ Javadoc location: [path to javadoc]
|__ Native library location: (None)
|__ Access rules : No restrictions
我对Netbeans比较熟悉,所以我可能会错误地设置它,但我认为我已将XStream作为第三方库包含在我的Eclipse GWT项目中并正确引用了二进制jar,源jar和javadoc罐
抛出错误的客户端方法:
public void onSuccess(String profilesXml) {
// Deserialize the xml
XStream xstream = new XStream(new DomDriver());
ProfilesImpl profiles = (ProfilesImpl) xstream.fromXML(profilesXml);
// Show the RPC result to the user
this.friendsWidget.setFriendProfiles(profiles);
this.friendsWidget.update();
}
GWT编译器错误:
Compiling module org.redboffin.bandmates.BandMates
Validating newly compiled units
[ERROR] Errors in 'file:/C:/Documents%20and%20Settings/Darren/workspace/BandMates/src/org/redboffin/bandmates/client/widgets/FriendsWidget.java'
[ERROR] Line 63: No source code is available for type com.thoughtworks.xstream.XStream; did you forget to inherit a required module?
[ERROR] Line 63: No source code is available for type com.thoughtworks.xstream.io.xml.DomDriver; did you forget to inherit a required module?
Finding entry point classes
[ERROR] Unable to find type 'org.redboffin.bandmates.client.BandMates'
[ERROR] Hint: Previous compiler errors may have made this type unavailable
[ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly
我不确定您可能需要哪些其他信息来帮助我,但如果您需要我未提供的信息,请询问。
感谢您阅读此内容: - )
答案 0 :(得分:2)
您不需要在gwt.xml文件中导入XStreams包。例如。类似的东西:
<inherits name='com.thoughtworks.xstream'/>
答案 1 :(得分:1)
GWT将Java源代码编译为JavaScript。你不能只指一个普通的罐子。如果您真的必须使用XStream,则需要在客户端软件包下包含源代码或创建单独的模块并导入它。
但对我而言,这只是重新发明轮子。你会有很多工作,它会比RPC慢。即使有其他客户端使用XML输出,也许你应该考虑两种方式。