Fala pessoal, iniciando os estudos em java web, desde ontem estou tendo um problema ao criar um projeto simples de connection factory utilizando jdbc e mysql.
- Java instalado é o 17,
- Utilizando eclipse para java ee and web,
- Driver connector do mysql platform independent versao mais recente
adicionado ao build path do projeto.
não está reconhecendo os imports, eclipse reclamando com os alerts em vermelho.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public Connection getConnection() {
try {
return DriverManager.getConnection(
"jdbc:mysql://localhost/JavaWeb", "root", "root");
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
Hoje dando aula eu percebi que o NetBeans tbm estava “enroscando” nisso. Ele não dá erro como o Eclipse, mas não “enxerga” o pacote java.sql
para fazer importações automaticamente. Isso se dá por causa da versão do JDK. Desde o Java 9 o pacote java.sql
está em outro módulo do JDK e o NetBeans, e pelo jeito o Eclipse tbm, precisam ser informados que usaremos esse módulo nas suas últimas versões. Eu particularmente nem tinha notado isso, pq lidar com JDBC direto e o pacote java.sql eu só faço quando vou dar aulas introdutórias de integração Java e Banco de Dados. Em projetos “de verdade” sempre usamos algum framework e isso acaba ficando transparente. Enfim, a solução é:
No pacote padrão do seu projeto crie um arquivo chamado module-info.java
e o conteúdo do mesmo deve ser:
module ModuloAplicacao {
requires java.sql;
}
No NetBeans fica assim:
Se quiser ler sobre os módulos do JDK, veja aqui Noções básicas sobre os módulos do Java 9 | Oracle Brasil
3 curtidas
Caramba mais uma vez muito obrigado, só essa pequena linha resolveu.
E que bom ter resolvido tão simples e aprendido sobre isso, já vou também passar essa informação aos colegas que tentaram ajudar.
No package default do projeto já tinha até o arquivo ‘module-infor.java’ só estava sem a linha solicitando o java.sql.
Mais uma vez muito obrigado!
1 curtida