Closed lincolnrocha closed 6 years ago
Tentando usar o Guice, tive problemas na hora de criar um Injector no main() de BankSys.
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/ImmutableList at com.google.inject.internal.Errors.<clinit>(Errors.java:709) at com.google.inject.internal.InternalInjectorCreator.<init>(InternalInjectorCreator.java:62) at com.google.inject.Guice.createInjector(Guice.java:96) at com.google.inject.Guice.createInjector(Guice.java:73) at com.google.inject.Guice.createInjector(Guice.java:62) at banksys.view.BankSys.main(BankSys.java:25) Caused by: java.lang.ClassNotFoundException: com.google.common.collect.ImmutableList at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 6 more
Tentei buscar sobre, mas não consegui ir muito longe em resolver isso. O erro buscando essa "ImmutableList" era corrigido usando a lib Guava , mas aí outros erros surgiam no lugar, então não sei se é bem por aí.
Quebrando a cabeça um pouco, consegui depois de descobrir que só o Guice não basta, tem que importar também essas outras libs.
Essa issue tem como objetivo incorporar o Dependency Inversion Principle do SOLID ao projeto. Para isso será necessário utilizar um container de injeção de dependência (ou inversão de controle). Nesse caso, o container adotado será o framework Guice da Google. Veja aqui um tutorial bem didático sobre como utilizar o Guice. Todos do time @TPII20162/class devem se envolver nessa issue.
OBS. No BankSys, a camada de visão depende da camada de serviço e a camada de serviço depende da camada de persistência.