【问题标题】:Intellij Cannot find class in class path [duplicate]Intellij在类路径中找不到类[重复]
【发布时间】:2015-12-24 22:19:46
【问题描述】:

所以我按照其他帖子中列出的所有步骤将 mysql-connector-java-5.1.36-bin 添加到 intellij 12 中的类路径中,当我编写代码时,intellij 清楚地看到它并让我导入它,但是当我在 tomcat 中运行应用程序时,我得到一个 ClassNotFoundException

以下是我的设置和代码的屏幕截图。

 public void runLookUp(String s){
    String url = "jdbc:mysql://localhost:3316/test";
    String username = "java";
    String password = "password";
    System.out.println("Connecting database...");

    System.out.println("Loading driver...");

    try {
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Driver loaded!");
    } catch (ClassNotFoundException e) {
        throw new IllegalStateException("Cannot find the driver in the classpath!", e);
    }
    try  {
        Connection connection = (Connection) DriverManager.getConnection(url, username, password);
        System.out.println("Database connected!");
    } catch (SQLException e) {
        throw new IllegalStateException("Cannot connect the database!", e);
    }
}

我知道在全局库而不是我的 lib 目录中执行此操作是不好的形式,我最初在那里执行此操作并将其移至全局以尝试解决此问题,但尚未将其移回。鉴于这似乎适用于其他所有人,我认为这与我从 intellij 部署我的 tomcat 的方式一样,有什么想法吗?

【问题讨论】:

    标签: java mysql tomcat intellij-idea classpath


    【解决方案1】:

    这与 IntelliJ 完全无关。

    您需要将 JDBC 驱动程序 JAR 放在 Tomcat /lib 文件夹中,而不是放在任何项目 WEB-INF/lib 中。

    您编写的代码仍远非最佳:

    1. 硬编码的 URL、驱动程序类和凭据使其难以更改。
    2. 纯文本的用户名和密码。
    3. 没有 JNDI 查找。
    4. 没有连接池。

    【讨论】:

    • 感谢您标记另一个问题。我把它放在 WEB-INF/lib 中,作为其他答案的推荐,它现在可以正常工作。就代码而言,这只是示例代码,我的实际数据库访问代码分散在多个文件中,因为它确实涉及属性文件、池和查询验证,因此它不适合在堆栈溢出时发布,我个人认为您应该始终发布最简单的代码,以显示您的堆栈溢出问题,因为它适用于大多数人。
    • 不,不要放在WEB-INF/lib中。这曾经是正确的答案,但它不再适用于 Tomcat 7.x 及更高版本:tomcat.apache.org/tomcat-7.0-doc/…
    猜你喜欢
    • 1970-01-01
    • 2014-10-20
    • 2012-09-14
    • 2012-07-19
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    相关资源
    最近更新 更多