2013-04-23 6 views
0

J'ai un webapp installé et en cours d'exécution, mais chaque fois que je tente de se connecter à la base de données MySQL via une connexion JDBC je reçois un ClassNotFoundException.Eclipse Juno Java EE IDE avec tomcat7 - ClassNotFoundException

Le pot mysql-java-connector est dans mon WEB-INF/classes, ainsi que les dossiers WEB-INF/lib. C'est sur le chemin de compilation d'Eclipse, mais de toute façon le pot n'est pas déployé. J'ai essayé d'ajouter le pot séparément au chemin de compilation. J'ai été coincé ici pendant un bon moment.

que quelqu'un peut me diriger sur la façon de déployer le pot?

Heres partie du code que j'utilise pour se connecter avec ma base de données.

public class JdbcConnection { 
    public Connection connection; 

    public JdbcConnection(){ 
     String serverLocation = ""; 
     String db = ""; 
     String user = ""; 
     String password = ""; 

     try{ 
      InputStream in = JdbcConnection.class.getResourceAsStream("/props/database.properties") ; 
      Properties props = new Properties(); 
      props.load(in); 
      serverLocation = props.getProperty("serverLocation"); 
      db = props.getProperty("db"); 
      user = props.getProperty("user"); 
      password = props.getProperty("password"); 
      System.out.println(password + user + db + serverLocation); 
      } 
     catch(Exception e){ 
      System.out.println("error" + e); 
      }  

     createConnection(serverLocation, db, user, password); 
    } 

    public JdbcConnection(String serverLocation, String db, String user, String password){ 
     createConnection(serverLocation, db, user, password); 
    } 

Voici l'erreur qui survient dans la console. java.lang.ClassNotFoundException: com/mysql/jdbc/Driver

Voici la méthode de création de connexion

public void createConnection (String serverLocation, String db, String user, String password){ 
    //register driver 
    try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    } catch (InstantiationException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (IllegalAccessException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (ClassNotFoundException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    //    hostName = "jdbc:mysql://" + serverLocation+"/"+db+"?autoReconnect=true"; 
    String hostName = "jdbc:mysql://" + serverLocation+"/"+db+"?autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8"; 
    try { 
     connection = DriverManager.getConnection(hostName,user,password); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
+0

Votre application est-elle une application Web dynamique? Et essayez-vous de lancer tomcat depuis eclipse (serveurs) ou utilisez-vous eclipse juste pour générer la guerre? –

+0

Je suis en train de déployer une applciation web dynamique et de lancer tomcat depuis eclipse. – Karthik

+0

et pouvez-vous voir mysql-java-connector si vous ouvrez Projet> Ressources Java> Bibliothèques (dans Eclipse)? –

Répondre

0

Tomcat 6.x et des exigences plus élevées que vous avez tous les pilotes JDBC JARs dans son répertoire/lib .

Retirez-le de WEB-INF/classes (il ne fait pas bon là, de toute façon) et WEB-INF/lib, redéployez votre WAR, et vous serez en mesure de passer à votre prochaine erreur. Croyez-moi, vous vous trompez encore. Cela fonctionnera si vous le faites correctement.

je recommande encriers cette classe et de faire une connexion à MySQL sans Eclipse ou Tomcat. Si vous pouvez gérer cela, montez l'échelle d'un pas.

package persistence; 

import java.sql.*; 
import java.util.*; 

/** 
* util.DatabaseUtils 
* User: Michael 
* Date: Aug 17, 2010 
* Time: 7:58:02 PM 
*/ 
public class DatabaseUtils { 
/* 
    private static final String DEFAULT_DRIVER = "oracle.jdbc.driver.OracleDriver"; 
    private static final String DEFAULT_URL = "jdbc:oracle:thin:@host:1521:database"; 
    private static final String DEFAULT_USERNAME = "username"; 
    private static final String DEFAULT_PASSWORD = "password"; 
*/ 
/* 
    private static final String DEFAULT_DRIVER = "org.postgresql.Driver"; 
    private static final String DEFAULT_URL = "jdbc:postgresql://localhost:5432/party"; 
    private static final String DEFAULT_USERNAME = "pgsuper"; 
    private static final String DEFAULT_PASSWORD = "pgsuper"; 
*/ 
    private static final String DEFAULT_DRIVER = "com.mysql.jdbc.Driver"; 
    private static final String DEFAULT_URL = "jdbc:mysql://localhost:3306/party"; 
    private static final String DEFAULT_USERNAME = "party"; 
    private static final String DEFAULT_PASSWORD = "party"; 

    public static void main(String[] args) { 
     long begTime = System.currentTimeMillis(); 

     String driver = ((args.length > 0) ? args[0] : DEFAULT_DRIVER); 
     String url = ((args.length > 1) ? args[1] : DEFAULT_URL); 
     String username = ((args.length > 2) ? args[2] : DEFAULT_USERNAME); 
     String password = ((args.length > 3) ? args[3] : DEFAULT_PASSWORD); 

     Connection connection = null; 

     try { 
      connection = createConnection(driver, url, username, password); 
      DatabaseMetaData meta = connection.getMetaData(); 
      System.out.println(meta.getDatabaseProductName()); 
      System.out.println(meta.getDatabaseProductVersion()); 

      String sqlQuery = "SELECT PERSON_ID, FIRST_NAME, LAST_NAME FROM PERSON ORDER BY LAST_NAME"; 
      System.out.println("before insert: " + query(connection, sqlQuery, Collections.EMPTY_LIST)); 

      connection.setAutoCommit(false); 
      String sqlUpdate = "INSERT INTO PERSON(FIRST_NAME, LAST_NAME) VALUES(?,?)"; 
      List parameters = Arrays.asList("Foo", "Bar"); 
      int numRowsUpdated = update(connection, sqlUpdate, parameters); 
      connection.commit(); 

      System.out.println("# rows inserted: " + numRowsUpdated); 
      System.out.println("after insert: " + query(connection, sqlQuery, Collections.EMPTY_LIST)); 
     } catch (Exception e) { 
      rollback(connection); 
      e.printStackTrace(); 
     } finally { 
      close(connection); 
      long endTime = System.currentTimeMillis(); 
      System.out.println("wall time: " + (endTime - begTime) + " ms"); 
     } 
    } 

    public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException { 
     Class.forName(driver); 
     if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0)) { 
      return DriverManager.getConnection(url); 
     } else { 
      return DriverManager.getConnection(url, username, password); 
     } 
    } 

    public static void close(Connection connection) { 
     try { 
      if (connection != null) { 
       connection.close(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 


    public static void close(Statement st) { 
     try { 
      if (st != null) { 
       st.close(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void close(ResultSet rs) { 
     try { 
      if (rs != null) { 
       rs.close(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void rollback(Connection connection) { 
     try { 
      if (connection != null) { 
       connection.rollback(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 

    public static List<Map<String, Object>> map(ResultSet rs) throws SQLException { 
     List<Map<String, Object>> results = new ArrayList<Map<String, Object>>(); 
     try { 
      if (rs != null) { 
       ResultSetMetaData meta = rs.getMetaData(); 
       int numColumns = meta.getColumnCount(); 
       while (rs.next()) { 
        Map<String, Object> row = new HashMap<String, Object>(); 
        for (int i = 1; i <= numColumns; ++i) { 
         String name = meta.getColumnName(i); 
         Object value = rs.getObject(i); 
         row.put(name, value); 
        } 
        results.add(row); 
       } 
      } 
     } finally { 
      close(rs); 
     } 
     return results; 
    } 

    public static List<Map<String, Object>> query(Connection connection, String sql, List<Object> parameters) throws SQLException { 
     List<Map<String, Object>> results = null; 
     PreparedStatement ps = null; 
     ResultSet rs = null; 
     try { 
      ps = connection.prepareStatement(sql); 

      int i = 0; 
      for (Object parameter : parameters) { 
       ps.setObject(++i, parameter); 
      } 
      rs = ps.executeQuery(); 
      results = map(rs); 
     } finally { 
      close(rs); 
      close(ps); 
     } 
     return results; 
    } 

    public static int update(Connection connection, String sql, List<Object> parameters) throws SQLException { 
     int numRowsUpdated = 0; 
     PreparedStatement ps = null; 
     try { 
      ps = connection.prepareStatement(sql); 

      int i = 0; 
      for (Object parameter : parameters) { 
       ps.setObject(++i, parameter); 
      } 
      numRowsUpdated = ps.executeUpdate(); 
     } finally { 
      close(ps); 
     } 
     return numRowsUpdated; 
    } 
} 
+0

J'ai inclus tout .jar dans mon/Web-INF/lib/ainsi que/WEB-INF/classes/dossier. – Karthik

+0

S'il vous plaît lire la réponse que je vous ai donné - les deux sont complètement faux. Faites comme je l'ai suggéré et voyez si cela fonctionne mieux. – duffymo

+0

Non. Ne fonctionne pas J'ai juste copié tous mes fichiers .jars dans/libs de tomcat7. La même erreur persiste toujours. – Karthik

Questions connexes