2012-10-02 14 views
5

Tengo un ENUM que se utiliza en el lado del servidor. Quiero ser capaz de utilizar esta enumeración en el lado del cliente (GWT) también.Heredar origen de Java externo en el proyecto GWT

Esta es la estructura:

se.mycompany.core 
se.mycompany.core.TheEnum <-- this Enum. 

se.mycomapny.web.gwtproject <-- The GWT project. 
se.mycomapny.web.gwtproject.client 

He intentado añadir

<inherits name="se.mycompany.core.TheEnum"/> 

a mi archivo gwtproject.gwt.xml. Pero aparece el siguiente mensaje de error:

[ERROR] No se puede encontrar 'se/mycompany/core/TheEnum.gwt.xml' en su classpath; podría ser un error tipográfico, o tal vez se olvidó de incluir una entrada de ruta de clase para la fuente?

He intentado agregar el archivo TheEnum.gwt.xml a 'se/mycompany/core /' con el siguiente contexto.

<module> 
    <inherits name='com.google.gwt.user.User'/> 
    <source path="TheEnum"></source> 
</module> 

Pero todavía se queja de lo mismo.

Supongo que necesito agregar el se.mycompany.core.TheEnum al classpath en build.xml de alguna manera, pero no sé cómo ni dónde.

Respuesta

6

La etiqueta "inherits" se usa para importar otros módulos, no clases individuales. Se podría lograr lo que quiere mediante la creación de un módulo de GWT sencilla bajo el paquete core, y luego heredar ese módulo en la ya existente:

Crear un archivo llamado Core.gwt.xml bajo el paquete de se.mycompany.core con el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?> 
<module> 
    <source path="" includes="TheEnum.java"/>  
</module> 

Luego, en el módulo existente añadir:

<inherits name='se.mycompany.core.Core'/> 
+0

Aún así conseguir "No se puede encontrar 'se/miempresa/core/Core.gwt.xml' en su ruta de clase; podría ser un error tipográfico, o tal vez se le olvidó para incluir una entrada classpath para la fuente? " – brange

+0

Comprueba dos veces las rutas de archivos y los nombres de paquetes. He usado una configuración similar muchas veces y me funciona. –

+0

Si está compilando su archivo * .gwt.xml en un contenedor utilizando maven, es posible que su jar no tenga el archivo xml. Consulte el siguiente hilo para obtener una solución: https://stackoverflow.com/questions/9798955/with-maven-clean-package-xml-source-files-are-not-included-in-classpath – Jake88

0

mejor añadir la enumeración en el paquete del cliente, es decir, "se.mycomapny.web.gwtproject.client". Y desde el lado del servidor puede usar esta enumeración del paquete del cliente.

Todavía lo quiere en el lado del servidor solo entonces, cree un paquete "se.mycompany.core.shared", cree Core.gwt.xml en el paquete "se.mycompany.core".

Core.gwt.xml:

<module> 
<source path="shared"/> 
</module> 

Ahora crear TheEnum.java en el paquete "se.mycompany.core.shared". Y en su principal escritura de archivos gwt.xml debajo de la línea,

<inherits name='se.mycompany.core.Core'/> 
Cuestiones relacionadas