GWT第三方库问题:包含的代码

问题描述:

我正在使用Eclipse版本:3.5.1,GWT 2.0.0,GAE 1.3.0,并且我正在尝试使用XStream 1.3.2来'序列化'我的Java对象往返xml在GWT的客户端和服务器端之间。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 jar。

客户

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编译器错误:抛出错误T侧方法

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 

我不知道,你可能需要的其他信息来帮助我,但如果你需要的东西,我的天堂”那么请提问。

感谢远阅读本:-)

不要你需要导入XStreams包在你的gwt.xml文件。例如。例如:

<inherits name='com.thoughtworks.xstream'/> 

+0

我会尽力的,谢谢乔恩 – Darren 2009-12-17 14:28:04

+0

有了继承包括标签,编译器说: 加载继承模块“com.thoughtworks.xstream” [错误]找不到“COM/ThoughtWorks的/ xstream.gwt.xml '在你的类路径上;可能是拼写错误,或者您可能忘记为源代码包含类路径条目? – Darren 2009-12-17 14:30:06

+1

好吧,我不是GWT专家,但我认为该jar需要有源代码(由GWT编译器需要)和xml文件。有关更多信息,请参阅此博客(http://roberthanson.blogspot.com/2006/05/how-to-package-gwt-components.html)。 – 2009-12-17 14:59:31

GWT将Java源代码编译为JavaScript。你不能指向一个普通的罐子。如果您确实必须使用XStream,则需要在客户端软件包下包含源代码或创建单独的模块并导入它。

但对我来说,这只是重新发明轮子。你将会有很多工作,并且会比RPC慢。即使有其他客户使用XML输出,也许你应该考虑两种方式。