Pergunta

Eu tentei pesquisar, mas não conseguiu chegar a uma forma definida sobre como adicionar seus próprios pacotes para um projeto GWT.

As minhas estrutura de árvore esta aparência:

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


-com.mycompany.client
  MyApp.java

-com.mycompany.gui
  TableLayout.java

A resposta que eu vi lá fora diz para adicionar os pacotes relativos ao diretório raiz do arquivo gwt.xml, assim:

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

Em seguida, ele se queixa:

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

Alguém pode me dizer o que estou fazendo de errado e como corrigir isso?

Foi útil?

Solução

Você pode se livrar das duas linhas de caminho de origem, porque, por padrão GWT vai pegar tudo o que é relativo à raiz, e no pacote do cliente como você tem. Você também precisa mover seu pacote gui em seu pacote do cliente, para que ele se tornaria:

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

Assumindo que o seu MyApp.java é um EntryPoint real, então isso deve funcionar muito bem.

Uma outra coisa a notar é que você não pode usar Java classes que não são parte da biblioteca GWT JRE emulação, e seu projeto não irá compilar se o fizer. Você deve obter erros muito específicas sobre isso embora. Por exemplo, você não pode usar classes de biblioteca como java.math.BigDecimal, se eles não são emulados. Todas as suas próprias classes que você criar pode ser usado embora.

Outras dicas

embora, como @rustyshelf apontou, gwt irá converter tudo o que está sob client.* automaticamente, haverá momentos em que você vai querer manter as coisas fora de seus pacotes de cliente (reutilizando-los em vários projetos pode ser um deles) e para que a solução ainda reside na adição de outros pacotes para o processo usando o elemento source.

Agora, há um truque, você tem que decidir se deseja mover o arquivo gwt.xml de configuração ou se você precisa criar um novo.

para o seu caso em particular (onde ambos os pacotes compartilham uma raiz no pacote, com.mycompany) você pode simplesmente mover o arquivo <project_name>.gwt.xml ao pacote mais comum topo e apenas adicionar o novo pacote como uma fonte (e mantendo o <source path="client"/> lá também), tornando seu arquivo para olhar como:

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

Por outro lado, se os pacotes não compartilham nenhuma raiz, basta criar um novo arquivo *.gwt.xml apenas com os elementos de origem e colocá-lo em um pacote pai para o sub-pacote que você deseja adicionar, ou seja:

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

Note que se você precisa dar compilação de acesso ao sub-pacotes aninhados fazê-lo, separando-os com um / como em "admin/client"

Esperamos que esta ajuda você a voltar à pista e organizar seu código da melhor maneira possível.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top