有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java找不到net。来源:福格。jtds。jdbc。Tomcat web应用程序中的驱动程序

我正在学习如何使用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注册JTD,该类是从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)

共 (1) 个答案

  1. # 1 楼答案

    我意识到这个错误是由于一个很难看到的打字错误造成的。我最初拼错了sourceforge

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

    应该是:

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

    显然,另一种常见的打字错误是将名称中的jdbcjbdc混在一起

    修复后,一切正常