【问题标题】:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver. two program in one project ,one can work but the other can notjava.lang.ClassNotFoundException:com.mysql.jdbc.Driver。一个项目中的两个程序,一个可以工作,另一个不能
【发布时间】:2013-12-29 11:02:59
【问题描述】:

我知道有很多关于这个主题的问题,但我觉得我面临的情况确实不同。 问题: 我创建了一个 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;

    }
}

【问题讨论】:

标签: java mysql jdbc eclipse-rcp classnotfoundexception


【解决方案1】:

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

【讨论】:

  • 但是当我运行附录2中的程序时,如何将com.mysql.jdbc.Driver放在CLASSPATH上。与附录1中的程序有什么不同谢谢!
  • 这取决于您如何运行附录 2 中的程序。例如,从终端、Eclipse、Netbeans 等。
  • 可能你需要包含jar文件,包含这个类到类路径或构建库路径(大多像mysql-connector-java***.jar)
  • 感谢您的关注。我运行这两个程序,Eclipse.EventEntity.java 是我的 RCP 项目的一个文件,当我将 rcp 项目调试为“Eclipse 应用程序”时使用它,我将“Sql.java”作为 java 应用程序运行以进行测试是否可以连接到我的数据库。请教。谢谢!
  • 是的,我确定我已经按照您的建议做了,但问题仍然存在。哈哈...
【解决方案2】:

在此之前,我不明白从 Eclipse 运行的 RCP 项目中 Classpath 的含义。如果你想用 Eclipse 编写和运行一个 RCP 项目,你不仅应该把 *.jars 和其他你需要的文件放在构建路径中(程序编译时需要它们),还要在“运行时”中配置 Classpath。你可以像这样配置它:1、双击plugin.xml。2、选择Runtime并找到Classpath。3、点击'Add'来放置RCP项目运行时需要的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多