Search code examples
javadatabasejdbcclassnotfound

com.mysql.jdbc.Driver throws ClassNotFoundException while attempting to create database


Okay, I am getting really irritated because I realize this is something easy but at this point I am not sure what else to try. The program is simply supposed to create a Coin table that stores the names, quantities and values of coins. I had started off with starting the program from the command line but after not getting that to work I changed it up to execute in NetBeans. I keep getting the same error message though. I have searched for solutions and can't find the issue as my driver class appears to be what is required. I am currently using as the driver com.mysql.jdbc.Driver.

    public class CoinDataBase {

     static String file = "C:\\Users\\Dan\\Desktop\\database.properties.txt";

     public static void main(String[] args) throws SQLException, IOException,
        ClassNotFoundException {


     SimpleDataSource.init(file);

     Connection conn = SimpleDataSource.getConnection();
     try
     {
        Statement stat = conn.createStatement();

        stat.execute("CREATE TABLE Coin (Name VARCHAR(12),Value "
                + "DECIMAL(5,2),QTY DECIMAL(5,0),Value DECIMAL(5,2)"
                + ",Total DECIMAL(5,2))");
        stat.execute("INSERT INTO Coin VALUES('Penny',.01,5,.05)");
        stat.execute("INSERT INTO Coin VALUES('Nickel',.05,2,.10)");
        stat.execute("INSERT INTO Coin VALUES('Dime',.10,3,.30)");
        stat.execute("INSERT INTO Coin VALUES('Quarter',.25,2,.50)");
        stat.execute("INSERT INTO Coin VALUES('Half Dollar',.50,3,1.50)");
        stat.execute("INSERT INTO Coin VALUES('Dollar',1.00,2,2.00)"); 

        ResultSet result = stat.executeQuery("SELECT * FROM Coin");
        result.next();
        System.out.println(result.getString("Name")); 
     }
     finally
     {
        conn.close();
     }
    }
    }

And my second class...

    class SimpleDataSource {

    private static String url, username, password;

    static void init(String fileName) throws IOException, ClassNotFoundException
    {
      Properties props = new Properties();
      FileInputStream in = new FileInputStream(fileName);
      props.load(in);

      String driver = props.getProperty("jdbc.driver");
      url = props.getProperty("jdbc.url");
      username = props.getProperty("jdbc.username");
      if (username == null) username = "";
      password = props.getProperty("jdbc,password");
      if (password == null) password = "";
      if (driver != null)
        Class.forName(driver);  
    }

     static Connection getConnection() throws SQLException{
     return DriverManager.getConnection(url, username, password);
    }  
    }

And the error message in full:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at coindatabase.SimpleDataSource.init(SimpleDataSource.java:28)
    at coindatabase.CoinDataBase.main(CoinDataBase.java:20)
Java Result: 1

I would really appreciate any help. I don't know where I am going wrong. I can connect and create a database by going through services in NetBeans so I don't think it is configured wrong.


Solution

  • 1) Make sure oracle.jar is in your project's runtime classpath :

    http://netbeans.org/kb/docs/java/project-setup.html

    2) It's worth trying oracle.jdbc.Driver.OracleDriver

    'Hope that helps