我已将mysql-connector-java-5.1.18-bin.jar添加到jre和jdk库中。这是:
C:\Windows\system32>javap java.io.Bits
Compiled from "Bits.java"
class java.io.Bits extends java.lang.Object{
java.io.Bits();
static boolean getBoolean(byte[], int);
static char getChar(byte[], int);
static short getShort(byte[], int);
static int getInt(byte[], int);
static float getFloat(byte[], int);
static long getLong(byte[], int);
static double getDouble(byte[], int);
static void putBoolean(byte[], int, boolean);
static void putChar(byte[], int, char);
static void putShort(byte[], int, short);
static void putInt(byte[], int, int);
static void putFloat(byte[], int, float);
static void putLong(byte[], int, long);
static void putDouble(byte[], int, double);
}
C:\Windows\system32>javap com.mysql.jdbc.Driver
ERROR:Could not find com.mysql.jdbc.Driver
但是当我向同一个文件显示一个直接的类路径时,它没问题。
C:\Windows\system32>javap -classpath "B:\Java\Tools\mysql-connector-java-5.1.18\
mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar" com.mysql.jdbc.
Driver
Compiled from "Driver.java"
public class com.mysql.jdbc.Driver extends com.mysql.jdbc.NonRegisteringDriver i
mplements java.sql.Driver{
public com.mysql.jdbc.Driver() throws java.sql.SQLException;
static {};
}
当我使用Thilo's answer动态加载驱动程序时,问题就出现了。没有IOException。但是在字符串Class.forName(driver).newInstance()
上我有ClassNotFoundException
例外。将jar添加到jre之后,没有任何改变。这有什么问题?
答案 0 :(得分:1)
将jar添加到jre 之后你的意思是什么?我担心mysql-connector-java-5.1.18-bin.jar
未正确添加到类路径中。只有在可搜索的类路径中不存在该类时,才会抛出ClassNotFoundException
。 JDK附带的所有jar都是bootstrap类,可供java加载。但是,所有第三方类都需要在可搜索的系统或应用程序级别类路径中设置,以便java可以加载指定的类参数。
在命令提示符处尝试以下命令并执行java类。
set mysqljar="absolute-path-to\mysql-connector-java-5.1.18-bin.jar"
set classpath=%classpath%;.;%mysqljar%
只要这个jar在可搜索的类路径中可用,所有类加载器都可以从jar中找到并加载类。尝试这个更改并运行Thilo的示例,它应该正常工作。
答案 1 :(得分:0)
如果您是从命令行编译代码,请让javac
使用-cp
选项使用mysql驱动程序jar。像下面这样的东西应该有效:
C:\MyProject>javac -cp "B:\Java\Tools\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar" MyClass.java