Как включить внешний jar в проект GWT (Google Web Toolkit)? - PullRequest
8 голосов
/ 14 июля 2010

У меня есть внешний файл JAR с именем "xxx.jar".Я использую «xxx.jar» в своем проекте GWT.

Когда я пытаюсь построить версию JavaScript моего проекта в Ant, я получаю один из следующих типов ошибок в каждом месте, где я использую xxx.Я получаю сообщение об ошибке такого рода, когда при выполнении задачи «gwtc» в Ant процесс компиляции javac проходит очень хорошо.

[ОШИБКА] Строка 45: нет исходного кода для типаorg.xxx.ObjectName;Вы забыли унаследовать необходимый модуль?

Хорошо, так что он явно не может видеть / использовать xxx.jar.Однако решить эту проблему не так просто в GWT, как в «простой» Java.Из Интернета ref1 я понял, что мне нужно

  1. Включить все исходные (.java) файлы из xxx.jar в исходный каталог
  2. Добавитьэтот исходный каталог в каком-то новом файле gwt.xml
  3. Надейся и молись, чтобы все java-файлы были переведены GWT: /

Итак ... Что именно я делаю?что это за файл gwt.xml, который мне нужно создать (шаг 2)?Куда мне поместить исходный каталог и как на него ссылаться (шаг 1)?Какие именно механические шаги необходимы для добавления внешнего файла JAR в GWT?

Ответы [ 2 ]

4 голосов
/ 14 июля 2010

Поскольку ваш исходный код GWT должен быть скомпилирован в JavaScript для работы в браузере на стороне клиента, имеет смысл, что исходный код должен быть доступен для компилятора GWT.

Ознакомьтесь с Lars Vogels статья с кратким разделом на эту тему в своем уроке

Также имеет смысл из-за ограничений, Google Outline , что весь код в этом JAR-файле может не скомпилироваться в JavaScript GWT, даже если вы можете получить исходный код.

GWT поддерживает только небольшое подмножество классы, доступные в Java 2 Standard и Enterprise Edition библиотеки, так как эти библиотеки довольно большой и зависит от функциональности это недоступно в сети браузеры. Чтобы узнать, какие именно классы и методы поддерживаются для основные исполняемые пакеты Java, см. GWT Справочник по эмуляции JRE

Роберт Хансон подробно описывает шаг , как упаковать компоненты GWT

Удачи ...

0 голосов
/ 14 июля 2010

У вас должен быть файл проекта xml в каталоге src / com.myproject.blah (мой называется Setup.gwt.xml), который выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='setup'>
  <!-- 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                                      -->
  <inherits name="com.some.external.library.Utils"/>

  <!-- Specify the app entry point class.                         -->
  <entry-point class='com.myproject.blah.client.Setup'/>
  <stylesheet src="MyStyle.css"/>
</module>

В файле build.xml естьраздел:

<target name="libs" description="Copy libs to WEB-INF/lib">
   <mkdir dir="war/WEB-INF/lib" />
   <copy todir="war/WEB-INF/lib" file="${gwt.sdk}/gwt-servlet.jar" />
   <copy todir="war/WEB-INF/lib" file="/path/to/external/lib.jar" />

, где lib.jar содержит источник com.some.external.library.Utils, указанный в файле gwt.xml.

Что касается пункта (3), еслиextrnal lib использует только то подмножество Java, о котором знает компилятор GWT, у вас все в порядке.

Я не уверен на 100%, что вышеприведенное верно, но, похоже, оно работает для меня.

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