2010-06-06 4 views
3

Я уже читал, что в коде клиента GWT нет возможности запускать GSON, но его можно запустить в код сервера.Java + GWT + GSON на стороне сервера

Последний, который я пытаюсь достичь, но не работаю. Я думал, что любой класс в пакете com.whatever.server имеет доступ ко всему пространству имен JRE, включая отражение. Похоже, что это не так. Итак, как удалось всем этим разработчикам использовать GSON в коде сервера GWT? (Я новичок в GWT, поэтому ответ может быть очень простым.)

Спасибо.

EDIT: Моя установка следующим образом:

  • test.gwt.xml содержит: <source path='client'> и <source path='shared'>
  • клиент использует private final TestServiceAsync testService = GWT.create(TestService.class); и вызывает testService.testMethod();
  • TestService интерфейс и TestServiceAsync расположены в клиент пакета
  • TestServiceImpl, реализованный в test.server, использует Gson g = new Gson(); и т. д.

Исключение брошено является java.lang.NoClassDefFoundError: COM/Google/gson/Gson. Но кажется, что он поднят независимо от того, содержит ли метод код GSON или нет (достаточно, чтобы он содержал инструкцию импорта GSON).

 
Caused by: java.lang.ClassNotFoundException: com.google.gson.Gson 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    ... 33 more 
+0

Нельзя по какой-либо причине не использовать GSON на стороне сервера вашего приложения GWT. С какими ошибками вы сталкиваетесь с этим? Вы уверены, что ваш пакет 'server' не скомпилирован GWT при аварии? –

+0

Не могли бы вы рассказать о своих результатах? –

+0

Это звучит меньше, связанное с GWT и больше связано с вашим путем сборки, не включая ссылки на необходимый код GSON. –

ответ

3

Это проблема пути класса. GSON не находится в пути к классам. Какую IDE вы используете? если и использовать затмение - 1. правой кнопкой мыши проект 2. построить путь 3. Параметры сборки путь 4. выберите «библиотеки» на вкладке 5. нажмите «добавить банки ...» 6. во всплывающем окне выберите правильное расположение для каждой из необходимых банок.

0

В случае использования веб-приложения JSP/Servlet вам просто нужно удалить сторонние JAR-файлы в папку/WEB-INF/lib. Если проект представляет собой динамический веб-проект, Eclipse автоматически позаботится о том, чтобы правильно установить путь построения. Вам не нужно возиться с Eclipse buildpath. Не забудьте отменить все это.