Bom dia Pessoal! Alguém pode me ajudar? Sou iniciante, e estou começando a fazer um projeto Maven, estou tentando executar o projeto e esta dando erro:
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect A fábrica de sessões não pode ser criada
-> java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory Exception in thread "main" java.lang.ExceptionInInitializerError
at br.com.asdb.util.HibernateUtil.(HibernateUtil.java:25)
at TesteHibernate.main(TesteHibernate.java:9)
Caused by: java.lang.NoClassDefFoundError: javax/validation/ValidatorFactory
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3334)
at java.base/java.lang.Class.getMethodsRecursive(Class.java:3475)
at java.base/java.lang.Class.getMethod0(Class.java:3461)
at java.base/java.lang.Class.getMethod(Class.java:2193)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:113)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:292)
at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:728)
at br.com.asdb.util.HibernateUtil.(HibernateUtil.java:21) ... 1 more
Caused by: java.lang.ClassNotFoundException: javax.validation.ValidatorFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519) ... 11 more
O arquivo pom.xml
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/drogaria
</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">10111978</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<mapping class="br.com.asdb.entidades.Pessoa" />
</session-factory>
A classe HibernateUtil:
package br.com.asdb.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HibernateUtil {
private static final SessionFactory fabricaDeSessoes;
static {
try {
Configuration configuracao = new Configuration();
configuracao.configure();
ServiceRegistry registroServico = new StandardServiceRegistryBuilder()
.applySettings(configuracao.getProperties())
.build();
fabricaDeSessoes = configuracao.buildSessionFactory(registroServico);
} catch (Throwable ex) {
System.err.println("A fábrica de sessões não pode ser criada -> " + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() {
return fabricaDeSessoes.openSession();
}
}
E este é o arquivo hibernate.cfg.xml
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/drogaria</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">10111978</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<mapping class="br.com.asdb.entidades.Pessoa" />
</session-factory>
Classe Pessoa
package br.com.asdb.entidades;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="pessoa")
public class Pessoa {
private Long codigo;
private String nome;
@Id
@GeneratedValue
public Long getCodigo() {
return codigo;
}
public void setCodigo(Long codigo) {
this.codigo = codigo;
}
@Column(name="nome")
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}