重装了WinXp,想测试一下classpath的设置,结果发现很大的问题。运行下面代码会有问题。
//--------------------------------------------------
/*
* PathTest.java
*/
import com.mysql.jdbc.Driver;
public class PathTest
{
public static void main(String args[]){
System.out.println("OK!");
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch (Exception e) //这个地方没有捕获所有的异常么?
// catch (java.lang.ClassNotFoundException e)
{
System.out.println("driver失败");
// System.out.println(e.getMessage());
return;
}
System.out.println("OK!");
}
}
//End
//--------------------------------------------------
输出如下:
run
Exception in thread "main" java.lang.NoClassDefFoundError: org/aspectj/lang/Signature
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at PathTest.main(PathTest.java:10)
既然import语句已经编译通过,classpath似乎没有什么问题,Class.forName()却抛出了一个不能捕获的异常,请问是怎么回事?我以前使用的时候并没有发现这个问题。在网上搜了一下,似乎有不少类似问题,但是没有找到解决。
谢谢。
import java.sql.*;
Class.forName("org.gjt.mm.mysql.Driver");
Class.forName的作用就类似于import
所以前面需要import java.sql.*;而不是import com.mysql.jdbc.Driver;
mysql jdbc driver的安装问题,你仔细检查一下你的CLASSPATH,我以前碰过这个问题,就是因为CLASSPATH没有指定好,注意,mysql jdbc connector/J里头是解压出两个版本的驱动的,带g后缀的是debug版本,所以,除非你要对driver作开发,不然,你在CLASSPATH中不要包括那个带g后缀的驱动。
thats all.