2009-01-13 6 views
10

He intentado buscar pero no he podido encontrar una forma definida sobre cómo agregar tus propios paquetes a un proyecto GWT.Agregar paquetes Java a GWT

Mi estructura de árbol se parece a esto:

-com.mycompany 
    -public 
    MyApplication.html 
    MyApplication.gwt.xml 


-com.mycompany.client 
    MyApp.java 

-com.mycompany.gui 
    TableLayout.java 

La respuesta que he visto por ahí dice para agregar los paquetes relativos al directorio raíz del archivo gwt.xml, así:

<module> 
    <inherits name="com.google.gwt.user.User" /> 
    <entry-point class="com.mycompany.client.MyApp" /> 
    <source path="client" /> 
    <source path="gui" /> 
</module> 

a continuación, se queja:

Unable to find type 'com.technicon.client.MyApp' 
    Hint: Previous compiler errors may have made this type unavailable 
    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 

¿Puede alguien decirme lo que estoy haciendo mal y cómo solucionar este problema?

Respuesta

5

Puede deshacerse de las dos líneas de ruta de origen, porque de forma predeterminada GWT recogerá todo lo que sea relativo a la raíz, y en el paquete del cliente como usted. También es necesario mover el paquete de interfaz gráfica de usuario en su paquete de cliente, por lo que se convertiría en:

-com.mycompany 
    -public 
    MyApplication.html 
    MyApplication.gwt.xml 


-com.mycompany.client 
    MyApp.java 

-com.mycompany.client.gui 
    TableLayout.java 


<module> 
    <inherits name="com.google.gwt.user.User" /> 
    <entry-point class="com.mycompany.client.MyApp" /> 
</module> 

Asumiendo que su MyApp.java es un EntryPoint real, entonces esto debería funcionar bien.

Otra cosa a tener en cuenta es que no puede usar clases de Java que no son parte de la biblioteca de Emulación JRE de GWT, y su proyecto no se compilará si lo hace. Sin embargo, debes obtener errores muy específicos sobre esto. Por ejemplo, no puede usar clases de biblioteca como java.math.BigDecimal, si no están emuladas. Todas tus propias clases que crees pueden ser usadas.

9

aunque, como @rustyshelf señaló, gwt convertirá todo lo que está bajo client.* automáticamente, habrá momentos en que querrá mantener cosas fuera de los paquetes de sus clientes (reutilizarlos en varios proyectos podría ser uno de ellos)) y para eso la solución aún reside en agregar otros paquetes al proceso utilizando el elemento source.

ahora hay un truco, debe decidir si desea mover el archivo de configuración gwt.xml o si necesita crear uno nuevo.

para su caso en particular (donde ambos paquetes comparten una raíz en el paquete, com.mycompany) puede mover el archivo <project_name>.gwt.xml al paquete más común y simplemente agregar el nuevo paquete como fuente (y mantener el <source path="client"/> allí también) con lo que su archivo a parecerse a:

<source path="client"/> 
<source path="gui"/> 

por el contrario, si los paquetes no comparten ninguna raíz, basta con crear un nuevo archivo *.gwt.xml con sólo los elementos de la fuente y colocarla en una paquete principal para el subpaquete que desea agregar, es decir:

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

nota que si usted necesita dar a la compilación de acceso a los sub-paquetes anidados hacerlo separándolas con un / como en "admin/client"

esperanza que esto ayudará a volver a la pista y organizar el código de la mejor manera posible.

Cuestiones relacionadas