泽西岛: mysql java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 虽然包括在内

Jersey: The mysql java.lang.ClassNotFoundException: com.mysql.jdbc.Driver although inclueded

我正在尝试从邮递员 chrome 插件发送 GET 请求,但出现此错误 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我已经在我的项目中包含了 mysql-connector-java-5.1.35-bin

球衣端点:

@Path("/test")
public class Driver{

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public void mysqltest(){
        Database db = new Database();
        db.connection();

    }
}

数据库class:

public class Database {


    public  void connection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("jar works :) ");

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

我已经在同一个项目中用这个 class 测试了它,我得到了输出 driver works

Driver class:

public class Driver {

    public static void main(String[] args){
        connection();
    }

    public static  void connection() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("driver works :) ");

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

为什么我从 jersey 方法调用它时我在标题中收到错误?

添加到@LuiggiMendoza 所写的内容中,您需要了解工件的包装并跟踪 classloader 委托以了解 classloader 是否调用了您的 Driver class 也可以访问 MySQL 驱动程序 JAR。例如,将 MySQL JAR 添加到 WEB-INF/lib 可能 如果 Jersey 是 EJB JAR 的依赖项,而该 EJB JAR 本身位于 WEB-INF/lib网络应用程序。

您需要在 pom.xml 文件中添加以下依赖项。 (我假设您正在使用 Maven 项目)

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.39</version>
</dependency>

P.S。我遇到了同样的异常。这对我有用。