Hibernate 5.2 + JPA 2.1 + Eclipse (Problemas com configuração) Como configurar ? [Resolvido]

Estou com um projeto desktop swing que utiliza Hibernate 5, JPA-2.1
O problema está em configura-lo.

<persistence-unit name="erp" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
        <property name="hibernate.hbm2ddl.auto" value="create"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value=""/>
        <property name="hibernate.show_sql" value="false"/>
        <property name="hibernate.format_sql" value="false"/>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/athos"/>
        <property name="show_sql" value="true"/>
    </properties>
</persistence-unit>

package erp.aop;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class HibernateJpaUtil {

private static final EntityManagerFactory emf;

public static EntityManagerFactory getEntityManagerFactory() {
    return emf;
}

static {
    try {
        emf = Persistence.createEntityManagerFactory("erp");
    } catch (Throwable ex) {
        System.err.println("Initial EntityManagerFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

}

Quando eu mando rodar no eclipse ele dá o erro:

Initial EntityManagerFactory creation failed.javax.persistence.PersistenceException: No Persistence provider for EntityManager named erp
Exception in thread “main” java.lang.ExceptionInInitializerError
at erp.aop.HibernateJpaUtil.(HibernateJpaUtil.java:19)
at erp.usuario.UsuarioDaoImp.getUsuarioTodos(UsuarioDaoImp.java:27)
at erp.usuario.UsuarioDaoFacade.getUsuarioTodos(UsuarioDaoFacade.java:22)
at erp.usuario.UsuarioUtil.criarUsuario(UsuarioUtil.java:10)
at erp.principal.Principal.main(Principal.java:16)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named erp
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at erp.aop.HibernateJpaUtil.(HibernateJpaUtil.java:16)
… 4 more

ve se trocando isso :

por isso funciona :

org.hibernate.jpa.HibernatePersistenceProvider

funcionou rodando dentro do eclipse, quando exporta para jar ele da o erro seguinte:

C:\Users\vpmac>java -jar athos5.jar
Initial EntityManagerFactory creation failed.javax.persistence.PersistenceException: Unable to locate persistence units
Exception in thread “main” java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ExceptionInInitializerError
at erp.aop.HibernateJpaUtil.(HibernateJpaUtil.java:20)
at erp.empresa.EmpresaDaoImp.getEmpresaTodos(EmpresaDaoImp.java:28)
at erp.empresa.EmpresaDaoFacade.getEmpresaTodos(EmpresaDaoFacade.java:18)
at erp.cliente.PanelClienteCadastro.iniciarGui(PanelClienteCadastro.java:331)
at erp.cliente.PanelClienteCadastro.(PanelClienteCadastro.java:77)
at erp.cliente.JanelaClienteCadastro.iniciarGui(JanelaClienteCadastro.java:60)
at erp.cliente.JanelaClienteCadastro.(JanelaClienteCadastro.java:26)
at erp.principal.PrincipalHandle.criarJanelas(PrincipalHandle.java:111)
at erp.principal.PrincipalHandle.(PrincipalHandle.java:91)
at erp.principal.PrincipalHandle.getInstance(PrincipalHandle.java:84)
at erp.principal.JanelaPrincipal.iniciarHandle(JanelaPrincipal.java:419)
at erp.principal.JanelaPrincipal.(JanelaPrincipal.java:259)
at erp.principal.Principal.main(Principal.java:20)
… 5 more
Caused by: javax.persistence.PersistenceException: Unable to locate persistence units
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:95)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:71)
at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:52)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at erp.aop.HibernateJpaUtil.(HibernateJpaUtil.java:16)
… 17 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at org.hibernate.boot.archive.internal.ArchiveHelper.getJarURLFromURLEntry(ArchiveHelper.java:45)
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.parsePersistenceXml(PersistenceXmlParser.java:254)
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.doResolve(PersistenceXmlParser.java:233)
at org.hibernate.jpa.boot.internal.PersistenceXmlParser.locatePersistenceUnits(PersistenceXmlParser.java:72)
at org.hibernate.jpa.HibernatePersistenceProvider.getEntityManagerFactoryBuilderOrNull(HibernatePersistenceProvider.java:91)
… 22 more

Novamente o mesmo projeto coloco no Netbeans e ele gera um jar que funciona,
agora no eclipse ele só roda dentro dele, o jar gerado pelo eclipse gera um erro e não roda a aplicação.

Faz assim no seu Eclipse .

Acredito que os JARs estão no ClassPath .

feito isso, no seu projeto com botão direito, va em export -> Java-> Runable JAR File , isso ira abri a seguinte janela :

feito isso, basta escolher uma das opções e clicar em finish .

jargerado

{ },s

Fiz isso eu olhei o arquivo manifest e dentro dele estava assim:

Manifest-Version: 1.0
Rsrc-Class-Path: ./ antlr-2.7.7.jar classmate-1.3.0.jar commons-beanut
ils-1.9.2.jar commons-logging-1.2.jar dom4j-1.6.1.jar gnujaxp.jar hib
ernate-commons-annotations-5.0.1.Final.jar hibernate-core-5.2.12.Fina
l.jar hibernate-jpa-2.1-api-1.0.0.final.jar hsqldb.jar itextpdf-5.4.1
.jar jandex-2.0.3.Final.jar javassist-3.20.0-GA.jar jboss-logging-3.3
.0.Final.jar jboss-transaction-api_1.2_spec-1.0.1.Final.jar jcommon-1
.0.0.jar jfreechart-1.0.1.jar jlfgr-1_0.jar mysql-connector-java-5.1.
22-bin.jar servlet.jar swingx-core-1.6.2-AutoCompletition.jar
Class-Path: .
Rsrc-Main-Class: erp.principal.Principal
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

Dentro do eclipse tá rodando legal agora fora é que está difícil

Faz o seguinte, na imgem anterior ao inves de deixar com a opção “Package required libraries into generated JAR” utilize a "Copy requiered libraries into a sub-folder next to the gerenrated JAR"
desta forma vai funcionar .

Ok

estou fazendo tudo no windows 10.
ele agora abriu todos os 6 jars anteriores que eu tinha feito cara.
vou verificar aqui o que ocorreu e dar o retorno.

ou pode selecionar a primeira opção "extract alguma coisa " .

funcionou também dessa forma extraindo os pacotes para o jar gerado

show.
fecha o topico como solucionado .

{ },s

como fecha ? é só reeditar o tópico como resolvido ? ou tem algum outro botão para marcar como resolvido ?

deve ter um botão nas resposta algo como “marcar como resolvido.”