質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.79%

エラーが出てコンパイルできない。

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 2,147

sanchu52

score 181

「EclipseJavaプログラミング入門]で「JSP/サーブレットからのJDBCの利用」を勉強しています。
以下のコードでエラーが出てコンパイルできない状態です。
ログを見てもさっぱりわかりません。英語がよくわからないので、いきずまっています。
よろしくお願いします

//admin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>

<%@ page import="java.sql.*"  %>

<%

Class.forName("com.mysql.jdbc.Driver");

Connection users = DriverManager.getConnection("jdbc:mysql://localhost/MyServlet_DB"
        ,"root","各自のパスワードを指定");

Statement state = users.createStatement();

ResultSet result = state.executeQuery("select * from users");

String html = "<table border=\"1\">";

html += "<tr><td>ID</td><td>パスワード</td></tr>";

while (result.next()) {

    String id = result.getString("id");

    String pass = result.getString("password");

    html += "<tr><td>" + id + "</td>";

    html += "<td>" + pass + "</td></tr>";

}

html += "</table>" ;

result.close();

state.close();

users.close();

%>

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type"
          content="text/html; charset=UTF-8">

    <title>Database Access</title>

    <style>
        h1 {font-size: 14px; font-weight: bold;
            background-color: #DDF; padding: 3px;
        }
    </style>

</head>

<body>
    <h1>Myデータベースにアクセス</h1>

    <h2>データベースの一覧</h2>

    <%=html %>

    <hr>
    <h2>ユーザの追加</h2>

    <form action="./AddUser"  method="POST">
    <table>
        <tr><td>ログインID</td><td><input type="text"  name="id"></td></tr>
        <tr><td>パスワード</td><td><input type="password"  name="pass"></td></tr>
        <tr><td></td><td><input type="submit"  value="送信”></td></tr>

    </table></form>

    <hr>
    <h2>ユーザの削除</h2>

    <form action = "./DelUser"  method = "POST">
    <table>
        <tr><td>ログインID</td><td><input type="text"  name="id"></td></tr>
        <tr><td></td><td><input type="submit"  value="送信”></td></tr>

    </table></form>
</body>
</html>
//エラーlog
    HTTPステータス 500 – Internal Server Error


タイプ 例外報告

メッセージ [/admin.jsp] の処理中に行番号 [7] で例外が発生しました。

説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。

例外
org.apache.jasper.JasperException: [/admin.jsp] の処理中に行番号 [7] で例外が発生しました。

4: <%@ page import="java.sql.*" %>
5: 
6: <%
7: Class.forName("com.mysql.jdbc.Driver");
8: Connection users = DriverManager.getConnection("jdbc:mysql://localhost/MyServlet_DB","root","自分のパスワードを入力して実行すること");
9: Statement state = users.createStatement();
10: ResultSet result = state.executeQuery("select * from Users");


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:499)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


根本原因
javax.servlet.ServletException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:666)
    org.apache.jsp.admin_jsp._jspService(admin_jsp.java:187)
    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:476)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


根本原因
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1363)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1186)
    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:315)
    org.apache.jsp.admin_jsp._jspService(admin_jsp.java:123)
    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:476)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


注意 原因のすべてのスタックトレースは、サーバのログに記録されています


Apache Tomcat/9.0.17
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

validatorって何のことを指してますか?

エラー文言から察するに、以下のサービスのことかと思います。
https://validator.w3.org/

こちらのサービス、私自身で使ったことないので詳細は知りませんが、
wikipediaの説明を引用する限り、

HTML文書がHTMLやXHTML標準へ準拠しているかどうかを検証するためのサービス

です。(引用元)

つまり、JSPファイルを検証するためのものではないです。

強いて回答するならば、このサービスを使うのではなく、JSPのコンパイル方法を学習し、
コンパイルした上で出力されたエラー内容について取り組むべきです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/04/30 00:33

    ありがとうございます。EclipseでJavaプログラミングの勉強中です。584pもある参考書です。あと145pのところまで来ていて、入門書としてはかなりの量で、ゴールデンウイーク前半で読み終わり、そのあと復讐しようと思って,頑張っておりますが。jspはある程度勉強しているんですが、EclipseとJDBCの連携、jspと少し難しいところにきています。あと10ページ進めば、順調に読み進めると思われます。このコードは参考書にあるので、何回も読み直してみたのですが、うまくいきません。今日は寝てあしたがんばります。

    キャンセル

  • 2019/04/30 00:41

    結局validatorはhttps://validator.w3.org/のことですか?
    その参考書にJSPでこのサービスを使うように書いてあったのでしょうか?

    キャンセル

  • 2019/05/01 18:15

    1日がかりでネットで勉強して、参考書を丹念に実行していき、解決しました。どのようにしたかは初心者のため説明できません。とりあえず先に進みます。朝起きたらネットがつながらずに、半日かかって直して今から頑張ります。ありがとうございました。

    キャンセル

  • 2019/05/01 18:41

    せめてaikon_marimoさんの質問には答えてもらえないでしょうか。
    後からこの質問を見た方に少しでも情報を提供できるようにしてください。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.79%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る