Problemas ao utilizar Eclipse+MySQL

13 respostas
ramallius

E ae pessoal!!!
Minha dúvida é o seguinte…
Utilizo a IDE Eclipse para programar em Java e recentemente, praticamente, copiei e colei um código onde mostrava uma conexão com o banco MySQL. Segui os passos do livro Java Como Programar 6ª edição e alguns conceitos da apostila da Caleum, conceitos estes, principalmente em relação ao conector do MySQL e adição do mesmo, através do Build Path…
Ao compilar, é apresentando o seguinte erro:

Erro ao testar conexao MySQL com Java:

Exception in thread main java.lang.UnsupportedClassVersionError: Bad version number in .class file

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$100(Unknown Source)

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Não entendi nada…
Se alguém aí, souber qual foi o problema e puder me informar me informar, agradeço.

Atenciosamente,
Marcelo

13 Respostas

gerdec

posta o codigo da sua conexão mysql para que eu possamos te ajudar blz

gerdec

da uma olhada nesse topico:

http://www.guj.com.br/posts/list/81332.java#432986

ramallius

Opa, valeu cara…
Está aí o código, um pouco grande…

import java.sql.Connection;

import java.sql.Statement;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;
public class DisplayAuthors

{

// nome do driver JDBC e URL do banco de dados

static final String JDBC_DRIVER = com.mysql.jdbc.Driver;

static final String DATABASE_URL = jdbc:mysql://var/lib/mysql/books”;
// carrega o aplicativo

public static void main( String args[] )

{

Connection connection = null; // gerencia a conexão

Statement statement = null; // instrução de consulta
// conecta-se ao banco de dados books e o consulta 
  try 
  {
     Class.forName( JDBC_DRIVER ); // carrega classe de driver do banco de dados

     // estabelece conexão com o banco de dados
     connection =                                                     
        DriverManager.getConnection( DATABASE_URL, "marcelo", "marcelo1987" );

     // cria Statement para consultar banco de dados
     statement = connection.createStatement();
     
     // consulta o banco de dados 
     ResultSet resultSet = statement.executeQuery(            
        "SELECT authorID, firstName, lastName FROM authors" );
     
     // processa resultados da consulta
     ResultSetMetaData metaData = resultSet.getMetaData();
     int numberOfColumns = metaData.getColumnCount();     
     System.out.println( "Authors Table of Books Database:" );
     
     for ( int i = 1; i <= numberOfColumns; i++ )
        System.out.printf( "%-8s\t", metaData.getColumnName( i ));
     System.out.println();
     
     while (resultSet.next()) 
     {
        for ( int i = 1; i <= numberOfColumns; i++ )
           System.out.printf( "%-8s\t", resultSet.getObject( i ));
        System.out.println();
     } // fim do while
  }  // fim do try
  catch (SQLException sqlException)                                
  {                                                                  
     sqlException.printStackTrace();
     System.exit( 1 );                                               
  } // fim do catch
  catch (ClassNotFoundException classNotFound)                     
  {                                                                  
     classNotFound.printStackTrace();            
     System.exit( 1 );                                               
  } // fim do catch
  finally // assegura que a instrução e conexão são fechadas adequadamente
  {                                                             
     try                                                        
     {                                                          
        statement.close();                                      
        connection.close();                                     
     } // fim do try
     catch ( Exception exception )                              
     {                                                          
        exception.printStackTrace();                            
        System.exit( 1 );                                       
     } // fim do catch
  } // fim do finally

} // fim de main
} // fim da classe DisplayAuthors

Agora que tentei rodar, apresentou a s. trace:

java.lang.UnsupportedClassVersionError: Bad version number in .class file

at java.lang.ClassLoader.defineClass1(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$100(Unknown Source)

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Exception in thread main

Falow!

gerdec

quando for colocar codigo favor usar as tags code para ficar melhor a visualização blz

ramallius

Putz, foi mau cara!

gerdec

cara acho que o problema esta aqui:

static final String DATABASE_URL = "jdbc:mysql://var/lib/mysql/books";

tente assim

// pelo que vejo books e o nome do seu banco então:

 static final String DATABASE_URL = "jdbc:mysql://localhost/books";

ou então tente

// pelo que vejo books e o nome do seu banco então:

 static final String DATABASE_URL = "jdbc:mysql://localhost:3306/books";

espero ter ajudado

ramallius

Então cara…
Já tinha tentado assim também, mas não consegui.
Um problema que estou vendo aqui, acho que seria em relação ao MySQL, pois ao ver a versão do mesmo (MySQL), não pe apresentada pra mim, a linha que informa a porta TCP/IP 3306 (default).
Estou pessupondo, não sei é isso mesmo.
Valeu, abraços!

gerdec

Para ficar mais facil a solução do problema especifica para mim: a versão do seu MYSQL, do Driver ou connector MYSQL e do eclipse já adianto a ideia e usar o conector mais novo com o mysql e 5. alguma coisa e tem ou esque ma geralmente quando a pessoa baixa o driver do banco ele vem .zip vc descompactar ele procurar o arquivo .jar dentro da pasta do mysql descompactado e adicionar o .jar ao projeto o que acontece e que muita gente adiciona o .zip completo ao projeto e não funciona quando tem que ser só o .jar espero ter ajudado

ramallius

Respondendo suas perguntas…
Minha versão do MySQL é a 5.0.24.
Como utilizo Slackware 11, o nome do pacote completo que foi instalado, é o mysql-5.0.24a-i486-1.tgz.
A versão do conector que estou utilizando é a: 5.0.7
E por ultimo, a versão do Eclipse: 3.3.1

Sobre o comentário que você fez sobre, o não decompactar o arquivo e muitas pessoas colocam o .zip no projeto, pode ter certeza que esse não é problema. Pois é o arquivo .jar que está em meu projeto e o adicionei no projeto, por aquele caminho Build Path etc…

Se faltou alguma coisa, é só dizer.
Abraços!

gerdec

cara faz o seguinte criei um exemplo de conexão JDBC que funciona perfeitamente aqui, vou te passar ele tenta usar e vê se dá algum erro que ai talvés posso te falar com base na utilização que faço dele o erro ,nada contra seu código e que esse utilizo a um bom tempo e assim tenho mais controle sobre ele ai vai

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ExemploJDBC {

	public static void main(String[] args) {

		//eclaração das variaveis necessarias 
		Connection conexao = null;
		Statement stm = null;
		String sit = "";
		ResultSet rs = null;

		try {
			// essa é a classe que é carregada para fazer a conexão jdbc com a base de dados

			Class.forName("com.mysql.jdbc.Driver").newInstance();

			/*coloque no lugar de "teste" o nome do seu banco e no lugar de 
			 root o seu usuário e 12345 a sua senha coloquei usuário root por que por padrão o mysql 
			 cria esse usuário como no linux no seu caso pode usar ele já pois ele já foi criado existe 		  
			 */
			conexao = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/teste", "root", "12345");
			/* esse jdbc:mysql://localhost:3306 e onde o banco está ou seja na sua maquina e a porta 3306 
			que é padrão no mysql*/ 
			
			//stm objeto que recebe a conexão

			stm = conexao.createStatement();
			// se a connexão der certo aparecera a mensagem Conexao realizada com sucesso

			sit = "Conexao realizada com sucesso";
			System.out.println(sit);

			//rs e o resulte set que recebe o retorno da consulta SQL

			rs = stm.executeQuery("select * from usuario");

		   // looping para interar e imprimir os dados
			while (rs.next()) {
				String nome = rs.getString(1);
				String senha = rs.getString(2);

				System.out.println(nome);
				System.out.println(senha);
			}
			// aqui o stm que contém o stamente recebe uma instrução insert e se executada
			//imprime confirmação
			stm.executeUpdate("insert into usuario (login,senha)values ('fabricio','farias')");
			System.out.println("comando insert executado com exito");
			
            // catch usado para avisar se der algum erro na consulta SQL com um Exception
		} catch (Exception e) {
			sit = "Nao foi possivel conexaoectar " + e.getMessage();
			System.out.println(sit);
		}

	}

}

espero ter ajudado testa e me fala o resultado por favor para que possamos solucionar esse problema blz

B

Eu tive um problema semelhante, porém estava utilizando no Windows.

Ao adicionar o MySql Conector, eu estava adicionando o arquivo .zip direto, ao fazer isso, tinha problemas com meu código.
Tente adicionar o arquivo .jar do mysql conector ao classpath.

Espero que funcione

Bruno

S

O problema pode estar na ide… eu tive o mesmo problema com o eclipse num curso que fiz… havia dois eclipses instalados… depois que vi que havia dois, entrei no outro que estava funcionando e pus pra rodar o programa com mysql e foi… daí não prestei atenção para ver qual era bem o erro no outro, mas parece erro de classpath.

L

Marcelo, eu tive um problema semelhante a este e o que percebi foi o seguinte:

Eu havia criado um projeto no eclipse em uma máquina com Java 6, com implementaação simples de uma classe (basicamente um HelloWorld :-)) . Funcionou na boa, porém depois copiei meu workspace para uma maquina com Java 5 e tentei rodar a classe e para minha surpresa deu pau.
Não sei se você fez algo parecido (copiar a sua workspace para outra maquina), mas acho que vale a pena voce dar uma olhada na configuração do seu Eclipse.

  • No projeto, clique com o botão direito e depois em Preferences\Java Compiler;
  • Na tela Java Compiler clique no link Configure Workspace Settings.
  • Dentro da nova tela (Compiler) verifique se a JRE que está configurada está coerente com a que voce tem instalado em sua maquina.

Espero ter ajudado. :wink:
Luiz

Criado 7 de fevereiro de 2008
Ultima resposta 9 de mai. de 2008
Respostas 13
Participantes 5