【发布时间】: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并直接返回;每当您进一步使用它时,应负责关闭它。