GWT第三方图书馆问题:包含的代码

时间:2009-12-17 12:51:35

标签: gwt jar

我正在使用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

我不确定您可能需要哪些其他信息来帮助我,但如果您需要我未提供的信息,请询问。

感谢您阅读此内容: - )

2 个答案:

答案 0 :(得分:2)

您不需要在gwt.xml文件中导入XStreams包。例如。类似的东西:

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

答案 1 :(得分:1)

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

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