Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';在Tomcat web应用程序中找不到net.sourcefourge.jtds.jdbc.Driver_Java_Tomcat_Jdbc_Jtds - Fatal编程技术网

Java Can';在Tomcat web应用程序中找不到net.sourcefourge.jtds.jdbc.Driver

Java Can';在Tomcat web应用程序中找不到net.sourcefourge.jtds.jdbc.Driver,java,tomcat,jdbc,jtds,Java,Tomcat,Jdbc,Jtds,我正在学习如何使用Tomcat和SQL Server部署web应用程序。我正在使用jTDS驱动程序连接到MS SQL Server(jTDS-1.3.1.jar),但在尝试创建到数据库的连接时,我一直遇到错误。程序似乎找不到jTDS驱动程序类。我知道在SE上有几个与此相关的问题,但没有一个解决方案有效 首先,我将描述我的项目是如何建立的。TOMCAT_HOME是指TOMCAT服务器的根目录。以下是我的Tomcat目录的一部分: TOMCAT_HOME\ -lib\ -j

我正在学习如何使用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文件放在root
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)

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

Class.forName("net.sourcefourge.jtds.jdbc.Driver");
应该是:

Class.forName("net.sourceforge.jtds.jdbc.Driver");
显然,另一种常见的拼写错误是在名称中混淆了
jdbc
jbdc


修复后一切正常。

应该没问题。确保在将JAR文件复制到
/lib
中后重新启动容器。例如,你能在中分享你的项目吗?此外,您应该真正地将
url
移动到
getConnection()
,删除
con
并直接返回它;无论何时进一步使用它,都应由管理员负责关闭它。