java.lang.ClassNotFoundException:在线等!

我连接mysql数据库时报这个异常!
Class.forName(DBconst.CLASSNAME).newInstance(); 无法指向运行DBconst类!
java.lang.ClassNotFoundException:
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.dbconn.Connect.<init>(Connect.java:21)
at com.user.Addbook.<init>(Addbook.java:10)
at com.servlet.Add.doGet(Add.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
package com.dbconn;

import java.util.*;
import java.io.*;

public class DBconst {

public static String CLASSNAME="";

public static String url="";
public static String username="";
public static String password="";

public DBconst(){
Properties prop=new Properties();
System.out.println("获得数据");
InputStream in=this.getClass().getResourceAsStream("DB.properties");//获得配置文件

try{
prop.load(in);

}catch(Exception e){
System.out.println("数据加载异常:"+e.getMessage());

}
/**
* 获得相关数据库的连接信息
*/
CLASSNAME=prop.getProperty("ClassName");
System.out.println();
url=prop.getProperty("url");
username=prop.getProperty("username");
password=prop.getProperty("password");

}

}

1.DBconst 这个类很明显.是读取xml里的数据库配置信息错误不在它
2.Class.forName(DBconst.CLASSNAME).newInstance();
这段话的意思是根据DBconst类中的CLASSNAME这个字符串加载类,然后创建实例.
我们从DBconst类文件里发现CLASSNAME已经从配置文件中获得属性(至于这个属性的值是否为空,我们不晓得).
在加上异常是ClassNotFoundException 该类不存在

总结错误可能有三种:
1.CLASSNAME这个字符串所指象的类不存在
2.配置文件中ClassName这个属性可能不存在值.或者给出的值是错误的
3.如果有涉及到数据库的话.那么你没有该数据库的驱动包

其他不懂的密我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-01
你应该把全部代码贴上来看看。尤其是 DBconst。

原来你是用配置文件进行数据库连接的呀。。
好久没用了,不太记得了。这个类应该没有写错。
也有可能是 驱动程序没有装载的原因。

你多查查。
或者把代码发给我,让我学习下。email;[email protected]
搞定了,记得把出错原因贴一下。谢谢。
第2个回答  2009-03-03
你用Config.getProperty()获取下数据看看
这有个例子
static {
driver = Config.getProperty("nms.jdbc.driver");
url = Config.getProperty("nms.jdbc.url");
user = Config.getProperty("nms.jdbc.username");
pwd = Config.getProperty("nms.jdbc.password");
try {
System.out.println("<<<<<<<<加载数据库驱动程序");
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
第3个回答  2009-03-03
你用println输出一下那个CLASSNAME看看,感觉是你CLASSFORNAME不对。
第4个回答  2009-03-01
你是不是没有加入mysql的驱动啊。
相似回答