Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Problemas para subir o servidor Grizzly

Boa Noite.

Estou tendo alguns problemas para subir o servidor. Pelos erros apresentados, acredito que seja algo referente ao jaxb.

Será q é necessário alguma nova biblioteca?

Segue o erro abaixo:

org.jvnet.hk2.internal.ServiceLocatorImpl$8.compute(ServiceLocatorImpl.java:1189)
    at org.jvnet.hk2.internal.ServiceLocatorImpl$8.compute(ServiceLocatorImpl.java:1184)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture$1.call(LRUHybridCache.java:113)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture$1.call(LRUHybridCache.java:109)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache$OriginThreadAwareFuture.run(LRUHybridCache.java:170)
    at org.glassfish.hk2.utilities.cache.LRUHybridCache.compute(LRUHybridCache.java:283)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetAllServiceHandles(ServiceLocatorImpl.java:1262)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1171)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getAllServiceHandles(ServiceLocatorImpl.java:1160)
    at org.glassfish.jersey.internal.inject.Providers.getAllServiceHandles(Providers.java:313)
    at org.glassfish.jersey.internal.inject.Providers.getProviders(Providers.java:185)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.<init>(MessageBodyFactory.java:325)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1117)
    at org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:261)
    at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:337)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:456)
    at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:112)
    at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:100)
    at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:95)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:150)
    at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:192)
    at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:150)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2350)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:612)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:597)
    at org.glassfish.jersey.server.model.ComponentModelValidator.<init>(ComponentModelValidator.java:97)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:439)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:162)
    at org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:304)
    at org.glassfish.jersey.internal.Errors$2.call(Errors.java:289)
    at org.glassfish.jersey.internal.Errors$2.call(Errors.java:286)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:301)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:272)
    at org.glassfish.jersey.server.ContainerFactory.createContainer(ContainerFactory.java:79)
    at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory.createHttpServer(GrizzlyHttpServerFactory.java:110)
    at br.com.alura.loja.Servidor.main(Servidor.java:16)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 64 more
MultiException stack 2 of 2
java.lang.IllegalArgumentException: Errors were discovered while reifying SystemDescriptor(
7 respostas

Oi Anderson,

A partir do Java 9 entrou um novo sistema do módulos no mundo Java. A principio uma boa ideia, no entanto não todos os módulos são carregados por padrão.

Em outras palavras, o JaxB vem junto com o JRE mas não é carregado automaticamente. Como o Hibernate acha que o modulo foi carregado (como era antes), vc recebeu o erro NoClassDefFoundError.

A noticia boa é que vc pode pedir pra a JVM que ela carregue esse modulo e tudo volte a funcionar. Vou ser "malandro" e passar um artigo de um instrutor da caelum que explica como resolver e adicionar o modulo:

https://alexandreaquiles.com.br/2017/10/13/sofrencia-com-java-9-cade-meu-jaxb/

Boa Noite Otávio.

O link que você me passou está quebrado, mas pesquisando no google encontrei um que acredito ser o q você sugeriu.

https://blog.caelum.com.br/erros-com-jaxb-no-java-9/

Agora entendi o motivo do problema, estou utlilizando java 11, depois de ler o artigo, baixei os jars do JAXB e acrescentei no class path do projeto, porém os erros continuam os mesmos. O que será q pode ser?

Estou tentando subir o sevidor Grizzly programaticamente, seguindo a orientação da primeira aula do curso.

É realmente necessário utilizar o Java 11? Com o 8 você resolveria esse problema.

Caso contrário, seu projeto vai ter que ter as dependências para: jaxb-api, jaxb-core, jaxb-impl

Gostaria de fazer funcionar com o java 11, bastaria adicionar esses jars no classpath ou precisaria fazer mais alguma coisa?

Bastaria adicionar esses jars no classpath do seu projeto

solução!

Resolvido o problema, utilizando o java 11.

Eu estava baixando versões mais antigas dos jars e faltava baixar uma dependência, o javax.activation-api.

Segue lista dos jars que devem ser baixados com suas respectivas versões:

*jaxb-impl-2.3.2.jar *jaxb-core-2.3.0.1.jar *javax.activation-api-1.2.0.jar *jaxb-api-2.3.1.jar

Muito Obrigado

Perfeito Anderson, obrigado por compartilhar!

Bons estudos