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

Problema de versão Java

Ao configurar minha classe de configuração do JPA, com o driver de conexão com o banco de dados MariaDB, o seguinte erro é exibido em tela:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in br.com.utfpr.eventos.config.JPAConfiguration: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.UnsupportedClassVersionError: JVMCFRE003 versão principal inválida; class=org/mariadb/jdbc/Driver, offset=6 (unable to load class org.mariadb.jdbc.Driver)

Estou utilizando Java 1.6 para compilar. Fato que é um problema de versão, qual a versão mínima para utilizar esses componentes de configuração?

5 respostas

Oi Caio,

Acredito que funciona sim no Java 6.

Pode ser alguma configuração do projeto que está com outra versão do Java.

Faz o seguinte, clica com o botão direito em cima do projeto e vai em: Properties. Na tela que abrir terá um menu no lado esquerdo, escolha o menu Project Facets, e verifique se a versão do Java é a 6.

Depois confere no menu Java Compiler se o Java também está na versão 6.

Veja se resolve.

Olá Rodrigo, ambos estão com Java 1.6. Tanto no Project Facets quanto no Java Compiler.

Será que não é necessário utilizar Java 1.8 nesse caso?

Como faço para acessar alguma documentação sobre isso?

Estou utilizando uma JRE 1.6 para rodar o tomcat também, será que não temos que utilizar uma mais atualizada?

Estou utilizando essa versão da biblioteca que contêm o Driver de conexão.

        <dependency>
            <groupId>org.mariadb.jdbc</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>2.1.0</version>
        </dependency>

No meu projeto, inclui a seguinte configuração na classe JPAConfiguration:

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        factoryBean.setJpaVendorAdapter(vendorAdapter);

        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        dataSource.setUrl("jdbc:mariadb://localhost:3306/utfpr_web");
        dataSource.setDriverClassName("org.mariadb.jdbc.Driver");

        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MariaDB53Dialect");
        properties.setProperty("hibernate.show_sql", "true");
        properties.setProperty("hibernate.hbm2ddl.auto", "update");

        factoryBean.setJpaProperties(properties);

        factoryBean.setPackagesToScan("br.com.utfpr.eventos.dao");

        return factoryBean;
    }

    @Bean
    public JpaTransactionManager transactionManager(EntityManagerFactory emf) {
        return new JpaTransactionManager(emf);
    }

Oi Caio,

Hum, nesse caso então acredito que a lib da MariaDB tenha sido compilada em uma versão posterior do Java e por isso esteja dando o erro no seu projeto.

Você terá que trocar seu projeto para o Java 7 então. Acredito que não seja necessário o Java 8.

Tranquilo Rodrigo, vou testar aqui.

Sabe se tem algum lugar que eu possa consultar esse tipo de coisa?

solução!

Oi Caio,

Nesse caso como é problema na MariaDB, a documentação no site deles mostra essa questão das versões:

https://mariadb.com/kb/en/library/about-mariadb-connector-j/

Bons estudos!