12
respostas

Problemas com o JAR

Segui passo a passo as instruçoes para rodar o JAR. Já tinha o MySql instalado assim como o Java. Todos estes funcionando perfeitamente uma vez que ja fiz vários cursos envolvendo os mesmos. Ao instalar o Jar, recebo a seguinte mensagem de erro: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_181]
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181]
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181]
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181]
        at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_181]
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) ~[mysql-connector-java-5.1.38.jar!/:5.1.38]
        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:307) ~[tomcat-jdbc-8.0.30.jar!/:na]
        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200) ~[tomcat-jdbc-8.0.30.jar!/:na]
        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:708) [tomcat-jdbc-8.0.

Vou tentar acesso ao Heroku mas este tem uma lista enorme no JSON. Preciso prosseguir com o curso mas vi no forum que este problema nao está satisfatoriamente resolvido. Aguardo retorno. Obrigado.

12 respostas

Eduardo, bom dia!

Primeiro precisamos verificar duas coisas:

  • Versão do MySQL;
  • Versão do Java

Para verificar a versão do MySQL:

mysql -u root;

O retorno vai ser parecido com isso:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 29
(VERSÃO 5.7.25)------> Server version: 5.7.25-0ubuntu0.18.04.2 (Ubuntu)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Para verificar a versão do Java

java -version

O retorno vai ser parecido com isso

(VERSÃO 1.8.0)------> openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-2ubuntu0.18.04.1-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

Depois de verificar se ambos estão nas versões corretas você irá precisar ver como qual é o plugin usado no seu user root, usando o código:

sudo mysql -u root

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

O retorno vai ser assim:

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

Caso na linha do root esteja escrito: auth_socket também, rodar os códigos abaixo:

sudo mysql -u root 

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

Depois disso só entrar na pasta do arquivo .jar e rodar o código:

java -jar nomeDoArquivo.jar

Qualquer dúvida ou diferença só falar

Espero ter ajudado e bons estudos!

bom dia Felipe. Bem as versoes batem: java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

Server version: 5.7.23-log MySQL Community Server (GPL)

e meu usuário root já está com o valor mysql_native_password

root | localhost | mysql_native_password | | mysql.session | localhost | mysql_native_password | | mysql.sys | localhost | mysql_native_password

Eduardo, nesse caso vamos criar outro usuário, seguindo através dos seguintes comandos:

Troque onde estiver com seuUsuario para um nome de usuário que te agrade

sudo mysql -u root

USE mysql;
CREATE USER 'seuUsuario'@'localhost' IDENTIFIED BY '';
GRANT ALL PRIVILEGES ON *.* TO 'seuUsuario'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='seuUsuario';
FLUSH PRIVILEGES;
exit;

service mysql restart

Lembre-se que agora para iniciar o mysql você deve usar:

mysql -u seuUsuario

Espero ter ajudado e bons estudos!

após todas as alterações que você sugeriu, ao logar com meu novo usuario, tenho o seguinte report: E:\Eduardo\Cursos Alura\React>mysql -u eduardo -P 3307 ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded

obs.: o usuario foi criado : eduardo | localhost | auth_socket

Outra questão Felipe. O problema está realmente nas configuracoes de usuario do mysql? O que voce esta considerando que possa ser?

Oi Eduardo tudo bem ?

Tenta executar o jar com o comando:

java -Dspring.datasource.password=suaSenha -jar cdcreact-1.0.0-SNAPSHOT.jar

No lugar do suaSenha vc coloca a senha do seu mysql se nao tiver deixa em branco

Olá Felipe. Foi o que fez quando executei o Jar

Rodando o java -jar cdcreact-1.0.0-SNAPSHOT.jar não consegue subir ?

Felipe, de acordo com minha primeira mensagem postada, nao. Nao sobe. Ao instalar , com o comando que voce sugere, e reportado o erro: The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181] at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_181] at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.MysqlIO.(MysqlIO.java:339) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:795) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181] at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[na:1.8.0_181] at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[na:1.8.0_181] at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) ~[mysql-connector-java-5.1.38.jar!/:5.1.38] at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:307) ~[tomcat-jdbc-8.0.30.jar!/:na] at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:200) ~[tomcat-jdbc-8.0.30.jar!/:na] at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(Conne

Opa, essa última exception, geralmente, indica que o banco não está rodando... Por mais que pareça uma pergunta básica, tem certeza que ele está no ar? Em relação ao json do heroku, ta grande mesmo. Vamos zerar o banco de lá.

Sim. O banco está rodando. A porta, no entanto e a 3307. Nao sei porque nao funciona na default

Eduardo, bom dia!

  • Abra o arquivo "my.ini" no diretório de instalação do servidor MySQL
  • Veja se o número da porta padrão "port = 3307"
  • Caso esteja altere para "port=3306"
  • Depois de mudar, salve o arquivo "my.ini"
  • Reinicie o servidor MySQL

Espero ter ajudado e bons estudos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software