コードClass.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver
をスローできません
名前が違うので。コードで正しく設定されていない可能性はありますか?
彼らのWebサイトからsqljdbc41.jarをダウンロードしたところ、クラスの正しい名前がcom.microsoft.sqlserver.jdbc.SQLServerDriver
であることがわかりました。 。
$ jar tf sqljdbc41.jar | grep SQLServerDriver.class
com/microsoft/sqlserver/jdbc/SQLServerDriver.class
MicrosoftのWebドキュメントで両方の名前を見つけたので、ある時点でこのクラスの名前を変更した(パッケージを変更した)か、一部のドキュメントにエラーがあります。
その.jarをTomcatのlibディレクトリ(例:apache-tomcat-7.0.67\lib
)にドロップするだけです。 )、Tomcatを再起動します。
正しいクラス名があり、libディレクトリに正しいjarがあり、それでもそのエラーが表示される場合は、Eclipseのセットアップに何らかのタイプミスがあるのではないかと思います。そして、Eclipseからデプロイすると、どういうわけかそれをロードしようとします。壊れたクラス名。 (私はEclipseを使用しておらず、そこからのデプロイについても知りません。)
非常に単純なアプリケーションを作成してみてください(そして、MSドライバークラスについてEclipseに伝えないでください):
@WebServlet("/")
public class SimpleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Set response content type
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<h1>" + "Welcome to the servlet!" + "</h1>");
try {
String server = "localhost";
String database = "testDB";
String password = "sapassword";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
Connection con = (Connection) DriverManager.getConnection(connectionUrl);
} catch (ClassNotFoundException e) {
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} catch (SQLException e){
out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
} finally {
out.println("<h1>" + "That's the end of the servlet!" + "</h1>");
}
}
}
そしてそれを実行します。次のような出力が表示された場合:
Welcome to the servlet!
SQLServerException_The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
That's the end of the servlet!
これは、ドライバーが正しくロードされたことを意味します。接続に失敗しましたb/cテストするSQLServerインスタンスを現在実行していません。