proyecto - sintaxis de un paquete en java
Agregar paquetes Java a GWT (2)
Intenté buscar pero no pude encontrar una forma definida de cómo agregar tus propios paquetes a un proyecto de GWT.
Mi estructura de árbol se ve así:
-com.mycompany
-public
MyApplication.html
MyApplication.gwt.xml
-com.mycompany.client
MyApp.java
-com.mycompany.gui
TableLayout.java
La respuesta que he visto dice que se agreguen 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>
Luego 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
¿Alguien puede decirme qué estoy haciendo mal y cómo solucionarlo?
Puede deshacerse de las dos líneas de ruta de origen, ya que GWT seleccionará por defecto todo lo que sea relativo a la raíz, y en el paquete del cliente como lo hizo. También debe mover su paquete de GUI a 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>
Suponiendo 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.
aunque, como señaló @rustyshelf, gwt convertirá todo lo que está debajo del client.*
automáticamente, habrá momentos en los que deseará mantener las 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 <project_name>.gwt.xml
al paquete más común y simplemente agregar el nuevo paquete como fuente (y manteniendo <source path="client"/>
allí también) haciendo que su archivo se vea así:
<source path="client"/>
<source path="gui"/>
por otro lado, si los paquetes no comparten ninguna raíz, simplemente cree un nuevo archivo *.gwt.xml
con solo los elementos de origen y colóquelo en un paquete principal para el *.gwt.xml
que desee agregar, es decir:
<module>
<source path=""/>
</module>
tenga en cuenta que si necesita dar acceso de compilación a los subpaquetes anidados, sepárelos con un /
como en "admin/client"
Espero que esto lo ayude a retomar el rumbo y organizar su código de la mejor manera posible.