2010-07-14 18 views
7

Tengo un archivo jar externo llamado "xxx.jar". Uso "xxx.jar" en mi proyecto GWT.¿Cómo incluir un contenedor externo en un proyecto de GWT (Google Web Toolkit)?

Cuando intento crear la versión de JavaScript de mi proyecto en Ant, recibo uno de los siguientes tipos de errores en cada ubicación en la que utilizo xxx. Obtuve un error de este tipo al hacer la tarea "gwtc" en Ant, el proceso de compilación javac funciona muy bien.

[ERROR] Línea 45: No código fuente está disponible para el tipo org.xxx.ObjectName; ¿Olvidaste heredar un módulo requerido?

Ok, así que está claro que no es capaz de ver/usar el xxx.jar. Sin embargo, solucionar este problema no es tan simple en GWT como en Java "simple". De internet ref1, supongo que tengo que

  1. incluyen toda la fuente (.java) archivos de xxx.jar en un directorio de origen
  2. Añadir este directorio de origen en algún tipo de archivo nuevo gwt.xml
  3. esperar y rezar para que todos los archivos de Java son traducibles por GWT:/

Así que ... ¿Qué es exactamente lo hago? ¿Qué es este archivo gwt.xml que necesito generar (Paso 2)? ¿Dónde pongo el directorio de origen y cómo hacer referencia a él (Paso 1)? ¿Cuáles son exactamente los pasos mecánicos necesarios para agregar un archivo jar externo en GWT?

Respuesta

4

Como su fuente de GWT tiene que estar compilada en JavaScript para funcionar en el navegador del lado del cliente, tiene sentido que el código fuente esté disponible para el compilador de GWT.

Salida Lars Vogels article con una breve sección sobre esto en su tutorial

También tiene sentido, debido a las restricciones que Google Outline que todo el código en este JAR no puede compilar a GWT JavaScript incluso si puede obtener la fuente.

GWT apoya sólo un pequeño subconjunto de las clases disponibles en las bibliotecas de Java 2 Standard y Enterprise Edition , ya que estas son las bibliotecas bastante grande y se basan en la funcionalidad que no está disponible en la web navegadores. Para saber exactamente qué clases y métodos son compatibles con los paquetes núcleo de tiempo de ejecución Java, consulte la GWT JRE Emulation Reference

Robert Hanson ofrece un paso a paso en how to package GWT components

buena suerte ...

0

Usted debe tener un archivo XML proyecto bajo src/com.myproject.blah (el mío se llama Setup.gwt.xml), que se ve algo como:

<?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> 

En el archivo build.xml hay una sección:

<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" /> 

donde lib.jar contiene la fuente com.some.external.library.Utils referencia desde el archivo gwt.xml.

En cuanto al punto (3), si la extrnal lib solo utiliza ese subconjunto de Java que el compilador GWT conoce, está bien.

No estoy 100% seguro de que lo anterior sea correcto, pero parece funcionar para mí.

Cuestiones relacionadas