I am attempting to connect to my local MySQL server with the following code:
dbURL = "jdbc:mysql://localhost:3306:/" + dbname;
try{
Class.forName("com.mysql.jdbc.Driver");
try{
con = DriverManager.getConnection(dbURL, dbuser, dbpass);
} catch (SQLException ex){
System.out.println("ERROR: Could not connection to SQL DB");
con = null;
}
} catch (ClassNotFoundException e){
System.out.println("Error: ");
e.printStackTrace();
}
I then get
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
I understand that Java cannot find the proper driver for connecting the Java environment to the MySQL database. This is being compiled on a Windows 7 system and ported over to an Ubuntu 11.04 system.
Is there a particular way I can run the Java program with a particular classpath such as:
java -cp /usr/share/java/mysql-connector-java.jar program.jar
That didn't work when I tried it.
解决方案
In case of JARs, the -cp and -classpath arguments and the %CLASSPATH% environment variable are ignored. Instead, the classpath has to be specified in the Class-Path entry of JAR's own /META-INF/MANIFEST.MF file. It can be a path relative to the JAR itself. E.g. in the same folder or in a /lib subfolder.
The below example assumes the driver to be in the same folder as the JAR.
Class-Path: mysql-connector-java.jar
(make sure that the MANIFEST.MF file has a blank line at the end)
See also: