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

Problema para rodar api no Mac

Não estou conseguindo rodar a api com o comando java -jar .cdcreact.jar. Verifiquei tudo, banco rodando e sem senha, java instalado, maven instalado, pasta .m2 na raiz do usuário com o settings.xml dentro, já até até troquei de terminal e nada funciona, acredito que seja alguma incompatibilidade da api com o mac ou algo que falta instalar. Alguém poderia me ajudar, estou empacado nessa tarefa já tem mais de um mês?

2017-11-16 16:02:03.872 ERROR 1591 --- [main] o.s.boot.SpringApplication : Application startup failed

Segue o link do erro completo no gist: https://gist.githubusercontent.com/grilomatheus/907430f3841952b5d4b773407e0b2b73/raw/c5997723a46b2502e67b5ba019e1042519c3c7ff/cdcreact.jar

11 respostas

Fala, Matheus.

Qual versão do Java você tem instalada na sua máquina? É o Java 9?

Para saber, faça em um Terminal:

java -version

Se sim, desinstale e instale o Java 8!


Porque suspeito disso?

O stack trace que você enviou mostra lá na causa:

Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.hibernate.validator.internal.util.Version.getJavaRelease(Version.java:36)
    at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:120)
    at org.hibernate.validator.internal.engine.ConfigurationImpl.<init>(ConfigurationImpl.java:96)
    at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:31)
    at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276)
    ... 66 more

Se você olhar, a classe que deu erro foi a Version na linha 36:

org.hibernate.validator.internal.util.Version.getJavaRelease(Version.java:36)

Mais pra cima, dá pra ver que o erro acontece em:

~[hibernate-validator-5.2.2.Final.jar!/:5.2.2.Final]

Essa versão do Hibernate Validator, que é usada pelo curso, só é compatível com o Java 8.


Aprofundando mais, esse código na versão 5.2.2.Final está de um jeito e, recentemente, mudaram o código para dar suporte ao Java 9, creio eu.

Olá Alexandre é o Java 9

matheusgrilo@Workstation:Components $[Matheus] java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

Então, Matheus.

É melhor usar o Java 8 por enquanto... Chato, né? :(

Mas o Java 9 foi lançado em Set/2017 e várias bibliotecas quebraram.

Você sabe como desinstalar o Java 9 e instalar o Java 8?

Então Alexandre. Troquei a versão do Java para a versão 8 e continua com exato o mesmo problema. Muito triste isso e não sei se sou só eu que estou passando por esse problema porque está acontecendo algo na minha máquina ou se poucas pessoas que fazem esse curso usam mac.

Matheus,

A nossa área tem dessas, né? Mas vai rolar!

O que acontece quando você abre um Terminal e dá:

java -version

Deveria dar algo como:

java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

Sim, dá justamente isso.

O erro não mudou?

Um colega aqui rodou no Mac e deu certinho. Rodei no meu Ubuntu e também foi.


Uma maneira de garantir que você tá com o Java 8 é a seguinte:

echo "export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home" >> ~/.bash_profile

Aí você tem que trocar a versão do seu Java, colocando o diretório apropriado.

Ah, Matheus!

Só uma coisa: você pode usar o seguinte endereço: https://cdc-react.herokuapp.com/api/autores

Tá na "nuvem"! hehe

Aí, você não precisa instalar a API localmente.

Basta trocar toda referência a localhost:8080 por cdc-react.herokuapp.com.

Ok. Vou usar o do heroku. Você teria também o link das APIs dos outros 2 cursos de react? Estou no segundo curso e não tem um link externo que eu possa utilizar. Estou travado.

solução!

Matheus,

No segundo curso tem sim: https://instalura-api.herokuapp.com/

Exemplo de chamada: https://instalura-api.herokuapp.com/api/public/fotos/rafael

Muito obrigado Alexandre. Vou finalmente conseguir dar continuidade ao meu curso.