Java JDBC ClassNotFoundException SQL Server 2008
因此,让我从以下事实开始:SQL Server JDBC驱动程序JAR文件肯定位于Java资源文件夹的构建路径中:Java JDBC ClassNotFoundException SQL Server 2008,java,sql-server-2008,servlets,jdbc,classnotfoundexception,Java,Sql Server 2008,Servlets,Jdbc,Classnotfoundexception,因此,让我从以下事实开始:SQL Server JDBC驱动程序JAR文件肯定位于Java资源文件夹的构建路径中: Java Resources---> -Libraries * Apache... * EAR Libraries * JRE System Library * sqljdbc4.jar-C:\jdbc_connector ----->(where I sav
Java Resources--->
-Libraries
* Apache...
* EAR Libraries
* JRE System Library
* sqljdbc4.jar-C:\jdbc_connector ----->(where I saved the JAR)
* Web Libraries
当我运行一个基本Java应用程序以查看是否找到了驱动程序并建立了连接时,它可以工作:
public class DBConnect {
private Connection conn;
private Statement stmt;
private ResultSet rs;
public DBConnect() {
super();
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;" +
"instance=SQLEXPRESS;databaseName=my_DB;user=Dan;password=12345;");
System.out.println("Connection Successful");
stmt = conn.createStatement();
String select = "SELECT * from ROLES";
rs = stmt.executeQuery(select);
while(rs.next()) {
String id = rs.getString(1);
String title = rs.getString(2);
System.out.println(id + " " + title);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
}
一切都按其应有的方式输出
一旦我尝试在Servlet中连接,该类就会在JDBC驱动程序Class.forName上抛出ClassNotFoundException。doGet应该在构造函数中自动调用,因此我的构造函数除了调用super之外是空的,因为它扩展了HttpServlet
public class LandingPage extends HttpServlet {
public LandingPage() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
PrintWriter out = response.getWriter();
String resultSet = "";
int index = 1;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1;" +
"instance=SQLEXPRESS;databaseName=Timecard_DB;user=Dan;password=Mc177700;");
out.println("<%@ page language='java' contentType='text/html; charset=ISO-8859-1'");
out.println("pageEncoding='ISO-8859-1'%>");
out.println("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>");
out.println("<html>");
out.println("<head>");
等等等等
有人能帮我弄清楚我需要做什么吗?谢谢。驱动程序JAR位于构建路径中,但它是否正确部署?我猜ClassNotFoundException不会发生。它应该位于以下位置之一:1应用程序的WEB-INF/lib文件夹2应用程序服务器的lib文件夹或类路径您使用的是哪一个?3系统类路径我怀疑它是。你能验证一下吗?我精通java,但不熟悉JavaEE和servlet。过去,每当我添加外部jar文件时,我在隔离要添加到的特定目录时从来没有遇到过问题。出于某种原因,当我尝试将sqljdbc4.jar存储在WEB-INF/lib文件夹或apache文件夹中时,.jar将进行配置,但深度仅与Java资源中的Libraries目录相同。如何将.jar配置到WEB-INF/lib文件夹中?当我尝试在该文件夹中生成路径时,它会将我发送到应用程序属性的“订单和导出”选项卡。从那里我想不出下一步该怎么办。你能提供更多关于你周围环境的信息吗?IDE、应用服务器?Eclipse Kepler、Apache Tomcat 6.0服务器您的项目应该是动态web项目下载Eclipse的JEE版本或WTP插件/功能。默认情况下,web资源放置在项目下的WebContent文件夹中。创建一个WebContent/WEB-INF/lib文件夹,并将驱动程序jar放在那里。如果从Eclipse内部部署,它将自动部署。如果要创建要手动部署的WAR文件,请确保通过Eclipse右键单击项目->导出->WAR文件。