Наследование модуля GWT и отсутствие исходного кода во время работы приложения - PullRequest
0 голосов
/ 25 ноября 2010

Я начинаю использовать GWT для проекта класса и хотел узнать реальные варианты использования для RPC. Итак, я нашел этот пример на этом же веб-сайте: Переполнение стека - проблема простого случая использования RPC (с кодом)

Почему я сделал этот пример? потому что я получал те же ошибки, которые пользователь опубликовал в моем собственном проекте, и я решил попробовать следовать его коду на моем компьютере, чтобы проверить, действительно ли я могу столкнуться со своими собственными ошибками.

Итак, смысл в том, что после копирования файлов в проекте Eclipse GWT и развертывания приложения я получил эти две ошибки во время выполнения:

1-я ошибка

12:14:07.874 [ERROR] [test] Line 17: No source code is available for type com.google.gwt.user.server.rpc.RemoteServiceServlet; did you forget to inherit a required module?

2-я ошибка

12:42:54.547 [ERROR] [test] Unable to find type 'org.redboffin.worldhug.client.test.Test'

12:14:09.341 [ERROR] [test] 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

Поэтому я попытался исправить Test.gwt.xml , как предложил Крэйг в сообщении. К сожалению, это решение не работает для меня, потому что все еще я получаю те же ошибки.

1-я ошибка: я не знаю, что происходит, потому что, например, в файле, который изображен, RemoteServiceServlet импортируется несколько строк раньше (несмотря на то, что он не виден). Этот файл находится в пакете "org.redboffin.worldhug.server.test;"

2-я ошибка: если пользователю, разместившему исходную ветку, не нужно «наследовать» новый пакет в своем проекте, я не могу понять, зачем он мне нужен. В любом случае, я поместил новую строку наследования в файл .gwt.xml:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.0.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.0.0/distro-source/core/src/gwt-module.dtd">
    <module rename-to='test'>
    <inherits name="com.google.gwt.user.User" />
    <entry-point class="org.redboffin.worldhug.client.test.Test"></entry-point>
<source path="client" />
    <source path="shared" />
    <inherits name="org.redboffin.worldhug.client.test.Test" />
    </module>

И вот что я получил:

 Loading inherited module 'org.redboffin.worldhug.client.test.Test'
     [ERROR] Unable to find 'org/redboffin/worldhug/client/test/Test.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?

(конечно, не скомпилировано)

Итак, я действительно не знаю, что происходит. Пожалуйста, кто-нибудь может пролить свет на этот вопрос? Почему это не работает? Что я делаю плохо? Что это за тип, который нужен при 2-й ошибке?

Ответы [ 5 ]

3 голосов
/ 28 мая 2012

Здравствуйте, Ирина и другие веб-странники,

Возможно, это двойной пост в уже отвеченном посте, или позвольте мне сказать, что это попытка уточнить включение кода исходного кода Java в XML-файл.Я застрял в той же точке, но я не мог указать, что имел в виду Эдриан.Последние два тега исходного кода скажут, какие пакеты и прицепные исходные файлы должны быть скомпилированы.Вот почему вы должны называть каждый пакет в атрибуте «path».

Файл ниже был автоматически сгенерирован в Eclipse Indigo в версии Framework: appengine-java-sdk-1.6.4.1.Это лишено ненужных комментариев.

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='wk_cms'>
  <!-- Inherit the core Web Toolkit stuff. -->
  <inherits name='com.google.gwt.user.User'/>
  <inherits name='com.google.gwt.json.JSON'/>
  <inherits name='com.google.gwt.http.HTTP'/>

   <inherits name='com.google.gwt.user.theme.chrome.Chrome'/>

  <!-- Other module inherits -->

  <!-- Specify the app entry point class. -->
  <entry-point class='de.someproject.wkcms.client.Wk_cms'/>

  <!-- Specify the paths for translatable code -->
  <source path='client'/>         <<-- my code (package client)
  <source path='communication'/>  <<-- my code (package communication)
</module>

Я надеюсь, что это держит всех вдалеке от исследования и тестирования до успеха ... =)

С уважением, Semo

PS.Отредактированный файл был не web.xml, а PROJECTNAME.gwt.xml.

1 голос
/ 25 ноября 2010

Я думаю, что вижу:

Test.java должно быть в пакете client.test, а не просто client, или все должно указывать на client.Test, а не client.test.Test.

0 голосов
/ 29 июня 2016

Вам нужно будет включить следующее

<source path='client.test'/>
0 голосов
/ 25 ноября 2010

(Не уверен, должен ли я "ответить на ваш вопрос" или нет, сначала попробуйте на сайте Stack Overflow!)

Спасибо за ваш комментарий, Адриан!

Это содержимое файла "web.xml":

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<!-- Servlets -->

<servlet>
    <servlet-name>testServlet</servlet-name>
    <servlet-class>org.redboffin.worldhug.server.test.TestServiceImpl</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>testServlet</servlet-name>
    <url-pattern>/worldhug/test/testService</url-pattern>
</servlet-mapping>

<!-- Default page to serve -->
<welcome-file-list>
    <welcome-file>test.html</welcome-file>
</welcome-file-list>
</web-app>

Кажется, что тег сервлета указывает мне на правильное место: TestServiceImpl.java находится внутри пакета "org.redboffin.worldhug.server.test" Неужели вы значит что?

Есть еще идеи?

Спасибо еще раз! :)

0 голосов
/ 25 ноября 2010

Кажется, что ваш класс сервера находится под пакетом server.test, а не просто server, что, вероятно, неправильно.Убедитесь, что сопоставление в файле web.xml правильно указывает на этот класс.

Я подозреваю, что настоящая ошибка, вероятно, где-то еще - я ожидал, что она все еще будет компилироваться.

...