【问题标题】:Can't find net.sourcefourge.jtds.jdbc.Driver in Tomcat web application在 Tomcat Web 应用程序中找不到 net.sourcefourge.jtds.jdbc.Driver
【发布时间】:2015-06-08 23:51:20
【问题描述】:

我正在学习如何使用 Tomcat 和 SQL Server 部署 Web 应用程序。我正在使用 jTDS 驱动程序连接到 MS SQL Server (jtds-1.3.1.jar),但是当我尝试创建与数据库的连接时,我一直遇到错误。该程序似乎找不到 jTDS 驱动程序类。我知道在 SE 上有几个与此相关的问题,但似乎没有一个解决方案有效。

首先,我将描述我的项目是如何设置的。 TOMCAT_HOME 指的是 Tomcat 服务器的根目录。这是我的 Tomcat 目录的一部分:

TOMCAT_HOME\
    -lib\
         -jtds-1.3.1.jar
         -many other default jar files
    -webapps\
         -TestSite\
                -index.jsp
                -login.jsp
                -WEB-INF\
                       -classes\
                             -com\
                                   -testsite\
                                        -LoginServlet.class
                                        -ConnectionManager.class
                                        -UserDAO.class
                                        -UserBean.class
                       -lib\
                       -web.xml

类文件的包是com.testsite,因此是classes 文件夹中的子目录。阅读 Tomcat 文档,将 jar 文件放在根 lib 文件夹中,将允许所有 Web 应用程序访问它们。 (我也尝试将 jar 文件放在 webapps\TestSite\WEB-INF\lib\ 目录中,但得到相同的错误)。

在我的 Web 应用程序中,我在我的一个类中使用 DriverManager 注册 jTDS,该类是从 servlet 调用的。:

package com.testsite;
import java.sql.*;

public class ConnectionManager {
    static Connection con;
    static String url;

    public static Connection getConnection() throws ClassNotFoundException, SQLException {
         url = "jdbc:jtds:sqlserver://localhost:1433/testdb";
         Class.forName("net.sourcefourge.jtds.jdbc.Driver");

         con = DriverManager.getConnection(url,"username","password");
         return con;
    }
 }

当我启动 Tomcat 服务器时,我能够成功导航到起始页面,但是当我尝试登录(调用 getConnection() 方法)时,它给出了以下错误。为什么在lib\ 文件夹中看不到?我该如何解决?

java.lang.ClassNotFoundException: net.sourcefourge.jtds.jdbc.Driver
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClas
sLoaderBase.java:1305)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClas
sLoaderBase.java:1157)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at com.trainingsite.ConnectionManager.getConnection(ConnectionManager.ja
va:22)

【问题讨论】:

  • 应该没问题。确保在将 JAR 文件复制到 /lib 后重新启动容器。例如,您可以在GitHub 中分享您的项目吗?另外,你真的应该把url移动到getConnection(),删除con并直接返回;每当您进一步使用它时,应负责关闭它。

标签: java tomcat jdbc jtds


【解决方案1】:

我意识到错误是由于难以看到的拼写错误造成的。我原来拼错了sourceforge

Class.forName("net.sourcefourge.jtds.jdbc.Driver");

应该是:

Class.forName("net.sourceforge.jtds.jdbc.Driver");

另一个常见的拼写错误显然是在名称中混淆了jdbcjbdc

修复后一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 2023-03-04
    • 1970-01-01
    • 2013-11-27
    • 2020-09-25
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多