java.lang.ClassNotFoundException:com.mysql.jdbc.Driver。一个项目中的两个程序,一个可以工作,但另一个不能

时间:2013-12-29 11:02:59

标签: java mysql jdbc eclipse-rcp classnotfoundexception

我知道关于这个主题有很多问题,但我觉得我面临的情况确实不同。 问题: 我创建了一个RCP项目,我需要连接到我的Mysql数据库。在编写程序之前,我编写了一个测试程序来测试所需的配置,并成功连接到我的Mysql数据库。测试程序可以在附录1中找到。 然后我开始在同一个项目中编写我的程序,但当我在其中调用函数时,异常java.lang.ClassNotFoundException: com.mysql.jdbc.Driver发生了。这真让我不安。该计划见附录2。

附录1 Sql.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Sql
{

    private static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL ="jdbc:mysql://localhost/manager?useUnicode=true&characterEncoding=utf8";
    private static final String USERNAME = "root"; 
    private static final String PASSWORD = "yhl0821";

    public static void main(String[] args)
    {
        Connection con = null;
        Statement sm = null;
        ResultSet rs=null;

        try
        {
            Class.forName(MYSQL_DRIVER);
            con =DriverManager.getConnection(URL, USERNAME, PASSWORD);
            System.out.println("Successed to connect the mysql!");
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } catch (SQLException e)
        {
            e.printStackTrace();
        }       
    }
}

附录2 EventEntity.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class EventEntity
{
    private static final String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://localhost/manager?useUnicode=true&characterEncoding=utf8";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "yhl0821";
public static List<Object> getEventEntity()
    {
        List<Object> list = null;//
        Connection con = null;
        Statement sm = null;
        ResultSet rs = null;

        try
        {
            Class.forName(MYSQL_DRIVER); //this is the setence creating exception
            con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            System.out.println("Successed to connect the mysql!");
            sm = con.createStatement();
            rs = sm.executeQuery("select * from systemevent ");//
        } 
        catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } 
        catch (SQLException e)
        {
            e.printStackTrace();
        } 

        return list;

    }
}

2 个答案:

答案 0 :(得分:0)

当您运行附录2中的程序时,类com.mysql.jdbc.Driver不在您的CLASSPATH上。

答案 1 :(得分:0)

在此之前,我不了解从Eclipse运行的RCP项目中Classpath的含义。如果你想用Eclipse编写和运行RCP项目,你不仅应该在构建路径中放置所需的* .jars和其他文件(在编译程序时需要它们),还要在“运行时”中配置Classpath。您可以这样配置:1,dobble单击plugin.xml.2,选择Runtime并找到Classpath.3,单击“Add”将文件放入RCP项目运行时所需的内容。