Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 JDBC ClassNotFoundException SQL Server 2008_Java_Sql Server 2008_Servlets_Jdbc_Classnotfoundexception - Fatal编程技术网

Java JDBC ClassNotFoundException SQL Server 2008

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

因此,让我从以下事实开始:SQL Server JDBC驱动程序JAR文件肯定位于Java资源文件夹的构建路径中:

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文件。