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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

8575閲覧

HTTP500エラーが出る

mutani

総合スコア20

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Apache Tomcat

Apache TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2018/09/18 02:01

編集2018/09/18 03:04

こんにちは、最近servletやDAOクラスの勉強を行っているのですが
以下のようなエラーがでました。
解決案をご教授いただけないでしょうか。
<試したこと>
・SQLよりデータを取得できているか。別クラスを作成し、コンソール出力はできました。

・tomcatのバージョンを変えてみましたが改善されませんでした。

・サーブレットの以下内容をコメントアウトするとエラーはでません。
t_productDAO t_productBean = new t_productDAO();
List<t_productBean>productList = t_productBean.findAll();
request.setAttribute("productList", productList);
以上です。

エラー内容及びservlet、daoクラスのソースを記載しておきます。

よろしくお願いいたします。
エラー内容

HTTPステータス 500 - Internal Server Error Type Exception Report メッセージ サーブレットの実行により例外を投げました 説明 The server encountered an unexpected condition that prevented it from fulfilling the request. 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました 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:1250) java.base/java.lang.System$2.findBootstrapClassOrNull(System.java:2134) java.base/jdk.internal.loader.ClassLoaders$BootClassLoader.loadClassOrNull(ClassLoaders.java:130) 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:499) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1228) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1138) java.base/java.lang.Class.forName0(Native Method) java.base/java.lang.Class.forName(Class.java:291) dao.t_productDAO.findAll(t_productDAO.java:27) servlet.ProductList.doGet(ProductList.java:32) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 注意 原因のすべてのスタックトレースは、のログに記録されています Apache Tomcat/9.0.10

servlet

package servlet; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import dao.t_productDAO; import model.t_productBean; /** * Servlet implementation class ProductList */ @WebServlet("/ProductList") public class ProductList extends HttpServlet { private static final long serialVersionUID = 1L; public ProductList() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); t_productDAO t_productBean = new t_productDAO(); List<t_productBean>productList = t_productBean.findAll(); request.setAttribute("productList", productList); RequestDispatcher rd = request.getRequestDispatcher("/ProductList.jsp" ); rd.forward(request,response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

DAO

package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import model.t_productBean; public class t_productDAO { //ここからメンバ変数定義 private final String driver = "com.mysql.jdbc.Driver"; private final String url = "jdbc:mysql://localhost/wbr_inventory_control?characterEncoding=UTF-8&serverTimezone=JST"; private final String user = "testuser"; private final String password = "pass"; public List<t_productBean> findAll() { Connection conn = null; List<t_productBean>productList = new ArrayList<t_productBean>();//リスト名(リスト作成 try { //JDBCドライバを読み込み Class.forName(driver); //データベースへの接続 conn = DriverManager.getConnection(url,user,password); //SELECT文を準備 String sql = "SELECT * FROM t_product"; PreparedStatement pstmt = conn.prepareStatement(sql); //SElECT文を実行し、結果を取得 ResultSet rs = pstmt.executeQuery(); while(rs.next()) { //select文の結果をArrayListに格納 int product_id = rs.getInt("product_id"); String product_genre_code = rs.getString("product_genre_code"); String product_name = rs.getString("product_name"); String product_maker = rs.getString("product_maker"); int product_price = rs.getInt("product_price"); int product_stock = rs.getInt("product_stock"); int product_sales = rs.getInt("product_sales"); String product_remarks = rs.getString("product_remarks"); t_productBean T_product = new t_productBean(product_id,product_genre_code,product_name ,product_maker,product_price,product_stock,product_sales,product_remarks); productList.add(T_product); } }catch(SQLException e) { //例外SQL例外あり e.printStackTrace(); return null; } catch (ClassNotFoundException e) { //ノットファウンドあり e.printStackTrace(); return null; }finally { //catchがなくても必ず実行 //データベース切断 if(conn != null) { try { conn.close(); }catch(SQLException e) { e.printStackTrace(); return null; } } } return productList; } }

何卒よろしくお願いいたします。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/09/18 02:08

はじめまして。エラーが出てから、試したことや調べたことが知りたいです。
m.ts10806

2018/09/18 02:25

ソースコードやエラーメッセージはマークダウンのcode機能を利用してください。見易さもそうですし、そのままコピペも容易にできるようになるので、回答者が再現確認などがしやすくなります。
m.ts10806

2018/09/18 02:26

あと、可能な範囲で結構ですので現象が再現するソースコードを提示してください。
mutani

2018/09/18 02:32

ayaaaさんご連絡ありがとうございます。調べたことはtomcatの設定についてや、原因部分について調べました。試したことはtomcatのバージョンを変えてみました。
退会済みユーザー

退会済みユーザー

2018/09/18 02:35

SQLについて記載がなかったので、詳細がわからずこちらにコメントさせていただいておりますm__m
mutani

2018/09/18 02:40

mts10806さんご指摘ありがとうございます。投稿内容を更新いたしましたのでご確認いただければ幸いです。よろしくお願いします。
mutani

2018/09/18 02:44 編集

ayaaaさんご連絡ありがとうございます!調べてみるとtomcatのバージョンについての記載が多く改善を試みているのですがなかなか解消されません。現在もいろいろ調べて試しています。 SQLは問題ないと考えております。
退会済みユーザー

退会済みユーザー

2018/09/18 02:51

SQLというより読み込み先ですね!どういったことを試したのか、具体的に書いたほうが回答がしやすい&来やすいと思うので、よろしくお願いします。
mutani

2018/09/18 03:06

ayaaaさんご指摘ありがとうございます。試したことを質問内容に追記いたしました!一度すべて作り直してみます!
退会済みユーザー

退会済みユーザー

2018/09/18 03:07

ありがとうございます^o^ いろいろ見てみます
guest

回答1

0

ベストアンサー

JDBCドライバはクラスパス指定していますか?

投稿2018/09/18 03:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mutani

2018/09/18 03:20

ご回答ありがとうございます。 クラスパス指定はできていると思います。 また、SQLのデータをコンソール出力できましたので、 DBとの接続関係はうまくいっていると考えております。
退会済みユーザー

退会済みユーザー

2018/09/18 04:23

eclipseのメニューから、ウインドウー設定ーJavaーインストール済みのJRE に記載のあるロケーションをコピペして教えていただけますか?
mutani

2018/09/18 05:02

ご連絡ありがとうございます。 コピペできなかったので手打ちで失礼いたします。 名前  |ロケーション      |型 □java10(デフォルト)  | c:/pleiades/java/10 |標準VM □java6 | c:/pleiades/java/6 |標準VM □java7 | c:/pleiades/java/7 |標準VM □java8 | c:/pleiades/java/8 |標準VM JAVA10にチェックが入っています。 親身になってくださって本当にありがとうございます!
退会済みユーザー

退会済みユーザー

2018/09/18 05:19

Java8にチェックを入れてみて動かしてみていただけますか?>< java/sql/Driverのクラスの位置が、Java8以前までとJava9以降だと変わっているみたいなので、クラスが見つけられていないかもです。 このままJava10でいくのであれば、TomcatのJRE設定を見直す必要があると思うのですが、いったん↑の方法で、そこが原因かどうかをはっきりさせるとよいかと思います! (探り探りの回答ですみません;;)
mutani

2018/09/18 05:31

ご連絡ありがとうございます。 java8にしてみてクラスパスを通してみたらうまく動作しました! ayaaaさんには大変感謝しております!! 高評価とベストアンサーにしてクローズさせていただきます! 色々とありがとうございました。(`・ω・´)ゞ 引き続き勉強がんばっていきます!
退会済みユーザー

退会済みユーザー

2018/09/18 05:32

よかったです*^o^* お疲れさまでしたっ!
mutani

2018/09/18 05:46

ayaaaさんお疲れさまでした! 本当にありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問