Boa tarde, Galera
Sou iniciante, peguei um exercicio para fazer mas não estou conseguindo concluir.
Esse exercicio é de JPA com Hibernate e posgres.
Fiz o persistence.xml, classe editora e um gera tabela junstamente esse que está apresentando a mensagem: não foi possivel carregar e nem localizar a classe principal GeraTabelas.
Codigo Persistence.xml
<?xmlversion ="1.0" encoding ="UTF -8"?>
org.hibernate.ejb.HibernatePersistence
entities.Editora
Class
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Editora {
@Id @ GeneratedValue
private long id;
private String nome;
private String email;
//getter e setter
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
GeraTabela.java, quando rodo esse código que apresenta o erro.
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class GeraTabelas {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence
.createEntityManagerFactory("Criacao-pu");
}
}
Erro: Não foi possível localizar nem carregar a classe principal GeraTabelas
Como que você ta rodando?
Outra coisa, o nome da sua classe pública tem que ser exatamente igual ao nome do arquivo. GeraTabela ou GeraTabelas
Outra coisa, quando for postar o código aqui no guj, coloca seu código envolvido por
assim ele fica formatado.
Outra coisa, bem vindo ao guj. 
Opa, obrigado pela reposta, quando rodo a classe pública GeraTabelas ele apresenta a mensagem "Erro: Não foi possível localizar nem carregar a classe principal GeraTabelas ".
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class GeraTabelas {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence
.createEntityManagerFactory("Criacao-pu");
}
}
<?xmlversion ="1.0" encoding ="UTF -8"?>
<persistence version ="2.0"
xmlns =" http://java.sun.com/xml/ns/persistence" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation =" http://java.sun.com/xml/ns/persistence http://java.sun.com /xml/ns/ persistence /persistence_2_0.xsd ">
<persistence-unit name = "Criacao-pu" transaction-type ="RESOURCE_LOCAL">
<provider >org.hibernate.ejb.HibernatePersistence </provider >
<class>entities.Editora</class>
<properties >
<property name =" hibernate.dialect " value ="org.hibernate.dialect.PostgreSQLDialect "/>
<property name =" hibernate.hbm2ddl.auto " value ="create"/>
<property name =" javax.persistence.jdbc.driver " value ="org.postgresql.Driver"/>
<property name =" javax.persistence.jdbc.user " value ="postgres"/>
<property name =" javax.persistence.jdbc.password " value ="masterkey "/>
<property name =" javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/livraria"/>
</properties >
</persistence-unit >
</persistence >
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Editora {
@Id @ GeneratedValue
private long id;
private String nome;
private String email;
//getter e setter
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
esoares faltou mapear seu objeto relacional
no Persistence.xml
add
<mapping class="seupacote.Editora "/>
Boa tarde, Robson
Fiz o seguinte coloquei essa classe dentro do pacote br.com.projeto01, mas o erro ainda está ocorrendo
O pesistence ficou dessa forma.
<?xmlversion ="1.0" encoding ="UTF -8"?>
<persistence version ="2.0"
xmlns =" http://java.sun.com/xml/ns/persistence" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation =" http://java.sun.com/xml/ns/persistence http://java.sun.com /xml/ns/ persistence /persistence_2_0.xsd ">
<persistence-unit name = "Criacao-pu" transaction-type ="RESOURCE_LOCAL">
<provider >org.hibernate.ejb.HibernatePersistence </provider >
<mapping class="br.com.projeto01.Editora "/>
<properties >
<property name =" hibernate.dialect " value ="org.hibernate.dialect.PostgreSQLDialect "/>
<property name =" hibernate.hbm2ddl.auto " value ="create"/>
<property name =" javax.persistence.jdbc.driver " value ="org.postgresql.Driver"/>
<property name =" javax.persistence.jdbc.user " value ="postgres"/>
<property name =" javax.persistence.jdbc.password " value ="masterkey "/>
<property name =" javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/livraria"/>
</properties >
</persistence-unit >
</persistence >
Erro: Não foi possível localizar nem carregar a classe principal br.com.Projeto01.GeraTabelas
corrija…
[code]
<?xmlversion ="1.0" encoding ="UTF -8"?>
<persistence version ="2.0"
xmlns =" http://java.sun.com/xml/ns/persistence" xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation =" http://java.sun.com/xml/ns/persistence http://java.sun.com /xml/ns/ persistence /persistence_2_0.xsd ">
<persistence-unit name = "Criacao-pu" transaction-type ="RESOURCE_LOCAL">
<provider >org.hibernate.ejb.HibernatePersistence </provider >
<properties >
<property name =" hibernate.dialect " value ="org.hibernate.dialect.PostgreSQLDialect "/>
<property name =" hibernate.hbm2ddl.auto " value ="create"/>
<property name =" javax.persistence.jdbc.driver " value ="org.postgresql.Driver"/>
<property name =" javax.persistence.jdbc.user " value ="postgres"/>
<property name =" javax.persistence.jdbc.password " value ="masterkey "/>
<property name =" javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/livraria"/>
</properties >
<mapping class="br.com.projeto01.Editora "/>
</persistence-unit >
</persistence > [/code]
abç.
posta o erro…
lá na sua Entity altera para…
@Entity
@Table(name = "editora")
public class Editora implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private Long id;
Robson, desculpa a demora na resposta estava meio enrolado.
ficou dessa forma
package br.com.Projeto01;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "Editora")
public class Editora implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private long id;
private String nome;
private String email;
//getter e setter
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Está aparecendo ainda o erro: Não foi possível localizar nem carregar a classe principal br.com.Projeto01.GeraTabelas
[quote=esoares]Robson, desculpa a demora na resposta estava meio enrolado.
ficou dessa forma
package br.com.Projeto01;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "Editora")
public class Editora implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private long id;
private String nome;
private String email;
//getter e setter
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Está aparecendo ainda o erro: Não foi possível localizar nem carregar a classe principal br.com.Projeto01.GeraTabelas[/quote]
Onde está o método construtor desta classe??? :shock:
Ficaria assim.
package br.com.Projeto01;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "Editora")
public class Editora implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(columnDefinition = "serial")
private long id;
private String nome;
private String email;
//Método Contrutor
public Editora(long id, String nome, String email) {
super();
this.id = id;
this.nome = nome;
this.email = email;
}
//getter e setter
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
o método contrutor deve ser sem parametros…
véio!!! antes entenda o conceito de Encapsulamento da POO
http://docs.oracle.com/javase/tutorial/javabeans/index.html
…
Eita, calma ae.
Cade o construtor default?
Se não tiver, vai dar mais erro.
O JPA precisa de um construtor sem parâmetro.
Vou perguntar a mesma coisa que perguntei no começo do post… como você está chamando a classe GeraTabelas?
Valeu, pessoal obrigado pela ajuda
Deu certo, valeu obrigado pela ajuda.
Desculpa ai.
Deu certo, valeu obrigado.
Desculpa ai.