Проблема сторонней библиотеки GWT: включен код - PullRequest
0 голосов
/ 17 декабря 2009

Я использую Eclipse Version: 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 ]

2 голосов
/ 17 декабря 2009

Не нужно ли импортировать пакет XStreams в файл gwt.xml. Например. что-то вроде:

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

1 голос
/ 17 декабря 2009

GWT компилирует исходный код Java в JavaScript.Вы не можете просто указать на обычную банку.Если вам действительно нужно использовать XStream, вам нужно будет включить исходные коды в пакет клиента или создать отдельный модуль и импортировать его.

Но для меня это просто изобретать велосипед.У вас будет много работы, и она будет медленнее, чем RPC.Даже если есть другие клиенты, использующие вывод XML, возможно, вам следует рассмотреть возможность использования обоих способов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...