Eclipseを使って、Apache+Tomcat+MySqlのWebアプリの勉強をしています。
参考にしたサイトの内容をそのまま(データベース名やユーザ名・パスワードはこちらの環境に合わせて変更)打ち込んで、
プロジェクトを右クリックして、実行 > サーバで実行 をすると、以下のエラーが出ます。
java.lang.NoClassDefFoundError: java/sql/Driver
ネットでよく投稿されているのが、
ClassNotFoundException: com.mysql.jdbc.Driver
で、JDBCドライバのパスがうまく通っていない、とは違う原因のようで、近くの人に聞いてもネットで調べてもわからないので投稿しました。
どなたかアドバイスをいただけると幸いです。
【 当方の環境 】
Oxygen.3a Release (4.7.3a)
jdk1.8.0_131
apache-tomcat-9.0.7
mysql-5.7.21
mysql-connector-java-5.1.46-bin.jar
【 参考にしたサイト 】
Eclipseの動的WebプロジェクトからMySQLを呼び出す
【 Eclipseのブラウザに出てくるメッセージ(全文) 】
----------------------------------------------------------------------
HTTPステータス 500 - Internal Server Error
----------------------------------------------------------------------
Type Exception Report
メッセージ An exception occurred processing [index.jsp] at line [15]
説明 The server encountered an unexpected condition that prevented it from fulfilling the request.
例外
org.apache.jasper.JasperException: An exception occurred processing [index.jsp] at line [15]
12:
13: try {
14: // 1.JDBC Driver の登録
15: Class.forName("com.mysql.jdbc.Driver").newInstance();
16: // 2.データベースへの接続
17: Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_db?useSSL=false", "xxxxx", "xxxxx");
18: // 3.SQL ステートメント・オブジェクトの作成
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:593)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
原因
javax.servlet.ServletException: java.lang.NoClassDefFoundError: java/sql/Driver
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:667)
org.apache.jsp.index_jsp._jspService(index_jsp.java:191)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
原因
java.lang.NoClassDefFoundError: java/sql/Driver
java.base/java.lang.ClassLoader.findBootstrapClass(Native Method)
java.base/java.lang.ClassLoader.findBootstrapClassOrNull(ClassLoader.java:1248)
java.base/java.lang.System$2.findBootstrapClassOrNull(System.java:2123)
java.base/jdk.internal.loader.ClassLoaders$BootClassLoader.loadClassOrNull(ClassLoaders.java:125)
java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:617)
java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:580)
java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1211)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1121)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:122)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:59)
java.base/java.lang.Class.forName0(Native Method)
java.base/java.lang.Class.forName(Class.java:292)
org.apache.jsp.index_jsp._jspService(index_jsp.java:130)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
注意 原因のすべてのスタックトレースは、のログに記録されています