Classpath仅包含正在运行的文件

时间:2013-09-05 13:50:48

标签: java jdbc classpath connector-j

我在尝试在代码中使用Connector / J JDBC驱动程序时遇到问题。

我编写的代码使用Class.forName("com.mysql.jdbc.Driver").newInstance()加载类,然后使用DriverManager.getConnection()加载驱动程序。

这会导致com.mydql.jdbc.Driver的ClassNotFoundException。我有mysql连接器的二进制JAR文件mysql-connector-java-5.1.26-bin.jar

我的代码通过在Netbeans中构建而打包成JAR文件。

要运行代码,我使用以下

java -classpath "/path/to/mysql-connector-java-5.1.26-bin.jar" -jar MyJarFile.jar

这给出了例外:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

在程序开头添加System.out.println(System.getProperty("java.class.path"));仅打印MyJarFile.jar

我尝试使用export将jar文件添加到CLASSPATH变量,并将-classpath标志的最后一部分设置为lib/*,但结果相同。

我尝试从.class文件运行该程序。它抱怨无法找到或加载主类。只有在类路径中使用通配符并且MyJarFile.jar位于该位置时,它才会运行。但它只会在加载驱动程序时挂起。

有没有人对发生的事情有任何想法?

1 个答案:

答案 0 :(得分:0)

尝试不要混用-cp和-jar选项,这可能有效:

java -cp "mysql-connector-java-5.1.26-bin.jar:MyJarFile.jar" my.package.Main

表示* nix或

java -cp "mysql-connector-java-5.1.26-bin.jar;MyJarFile.jar" my.package.Main

for windows

其中my.package.Main是您的主要班级。