Connection Factory não reconhece imports do java.sql

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);
		}
	}
}
1 curtida

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