Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

No Persistence provider for EntityManager named fracionamento

Fiz uma aplicação chamada Fracionamento com maven/jpa/hibernate no eclipse. Quando executo a aplicação na IDE, funciona perfeitamente. Então pelo eclipse exporto como JAR executável para ser executado em outro computador. O jar fica com tamanho de 17.022 kb.

Porém, quando tento executar na linha de comando com o comando: javaw -jar Fracionamento.jar dá o erro: "No Persistence provider for EntityManager named fracionamento"

O erro acontece neste parágrafo:

try { EntityManagerFactory factory = Persistence.createEntityManagerFactory("fracionamento"); this.entityManager = factory.createEntityManager(); } catch(Exception e) { JOptionPane.showMessageDialog(null, e.getStackTrace(), e.getMessage(), JOptionPane.ERROR_MESSAGE); }

Dá exception.

Abri o arquivo Fracionamento.jar e o arquivo persistence.xml está lá dentro da pasta resources/META-INF como deveria estar.

meu arquivo persistence.xlm

        <property name="hibernate.generate_statistics" value="false" />

        <property name="hibernate.c3p0.timeout" value="500" />
        <property name="hibernate.c3p0.idle_test_period" value="3000" />
        <property name="c3p0.min_size" value="20" />
        <property name="c3p0.max_size" value="100" />
        <property name="testConnectionOnCheckin" value="true" />
        <property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces" value="true" />
    </properties>

</persistence-unit>

Cleyton

3 respostas

Oi Cleyton!

O problema então é na geração do jar, que não deve estar empacotando todos os arquivos e dependências do projeto. Como você fez a geração desse jar?

Ele deveria ser gerado via Maven, com o comando: mvn clean package.

solução!

Rodrigo,

No eclipse eu estou gerando via export de jar executável, como eu sempre fiz e sempre funcionou.

Mas consegui resolver o problema, aparentemente, o jar ficou muito grande ou algo do tipo e o export não conseguia gerar o jar corretamente.

Resolvi fazendo assim: no pom.xml adicionei:

        <plugin>
              <artifactId>maven-assembly-plugin</artifactId>
              <configuration>
                <descriptorRefs>
                      <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                      <manifest>
                        <mainClass>br.com.alura.fracionamento.LoginFrame</mainClass>
                      </manifest>
                </archive>
              </configuration>
        </plugin>    

e depois o comando: mvn assembly:assembly

que gerou um jarzão de 75 mb que funcionou corretamente.

Só para explicar melhor, era uma aplicação em java/swing que acessava o banco de dados via JDBC sem maven e eu fiz uma refatoração para maven e JPA/Hibernate no lugar do JDBC, desde então o jar gerado pelo export do Eclipse passou a dar o erro descrito, apesar de executar corretamente dentro do eclipse em tempo de desenvolvimento.

Cleyton

Perfeito! O jar acaba ficando grande mesmo, pois precisa incluir todas as dependências da JPA e Hibernate, que são muitas :D

Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software