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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Q&A

解決済

1回答

1266閲覧

kod-書いていないはずのメソッドでエラーが出たときの対処が知りたいです。

Y.Mamoru

総合スコア47

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

0グッド

1クリップ

投稿2020/09/18 06:29

編集2020/09/18 08:11

〇現状
アンケートアプリケーションを作成し、実行しようとすると以下のエラーが出ます。

HTTPステータス 500 - javax.servlet.ServletException:
java.lang.NoSuchMethodError: Look.DataBase.getNo()I

調べてみたところ、クラスに定義されていないメソッドを参照しようとしたときに出てくるエラーだとわかりました。

上の文から、
LookクラスのDataBase.javaファイルに、getNo()Iというメソッドが定義されていないからだと読み取りました。

確かに上記クラス/ファイルはあるのですが、その中にgetNo()Iというメソッドは定義しています。
しかし参照元のファイルでもgetNo()Iという式を参照しようとしていません。

どこかでタイプミスでIをいれてしまったところがあるのかもしれないと思い探すのですが、
それも見当たりません。

もしわかればアドバイスをお願いします。

Servlet

1//参照元のServletです。 2 3package Look; 4 5import java.io.IOException; 6import java.sql.Connection; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.sql.Statement; 10import java.util.ArrayList; 11import java.util.List; 12 13import javax.servlet.ServletException; 14import javax.servlet.http.HttpServlet; 15import javax.servlet.http.HttpServletRequest; 16import javax.servlet.http.HttpServletResponse; 17 18 19public class StartServlet extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 23 request.setCharacterEncoding("utf-8"); 24 //接続準備 25 Connection conn = null; 26 Statement smt = null; 27 //接続開始(最初の一覧表の為のデータ取得) 28 try { 29 String sql = "SELECT No , NAME FROM Information WHERE ROWNUM <= 6"; 30 conn = DBManager.getConnection(); 31 smt = conn.createStatement(); 32 ResultSet rs = smt.executeQuery(sql); 33 List list = new ArrayList(); 34 35 //画面表示させるためにLISTに格納 36 while(rs.next()) { 37 DataBase db = new DataBase(); 38 db.setNo(rs.getString("no")); 39 db.setName(rs.getString("name")); 40 41 list.add(db); 42 43 } 44 request.setAttribute("list", list); 45 46 request.getRequestDispatcher("/jsp/start.jsp").forward(request, response);//★★エラー文ではここが示されています。★★ 47 return; 48 49 }catch(SQLException e) { 50 throw new ServletException(e); 51 }finally { 52 if(smt != null) { 53 try {smt.close();}catch(SQLException ignore) {} 54 } 55 if(conn != null) { 56 try {conn.close();}catch(SQLException ignore) {} 57 } 58 } 59 60 } 61 public void doGet (HttpServletRequest request, HttpServletResponse response) 62 throws IOException, ServletException 63 { 64 this.doPost(request, response); 65 } 66} 67

java

1//DataBase.java 2 3package Look; 4 5public class DataBase { 6 private int post; 7 private String address; 8 private String name; 9 private int year; 10 private int month; 11 private int date; 12 private int phone1; 13 private int phone2; 14 private int phone3; 15 private String blood; 16 private int breakfast; 17 private String opinion; 18 private String no; 19 private String time; 20 21 22 23 public String getTime() { 24 return time; 25 } 26 public void setTime(String time) { 27 this.time = time; 28 } 29 public String getNo() { 30 return no; 31 } 32 public void setNo(String no) { 33 this.no = no; 34 } 35 public int getPost() { 36 return post; 37 } 38 public void setPost(int post) { 39 this.post = post; 40 } 41 public String getAddress() { 42 return address; 43 } 44 public void setAddress(String address) { 45 this.address = address; 46 } 47 public String getName() { 48 return name; 49 } 50 public void setName(String name) { 51 this.name = name; 52 } 53 public int getYear() { 54 return year; 55 } 56 public void setYear(int year) { 57 this.year = year; 58 } 59 public int getMonth() { 60 return month; 61 } 62 public void setMonth(int month) { 63 this.month = month; 64 } 65 public int getDate() { 66 return date; 67 } 68 public void setDate(int date) { 69 this.date = date; 70 } 71 public int getPhone1() { 72 return phone1; 73 } 74 public void setPhone1(int phone1) { 75 this.phone1 = phone1; 76 } 77 public int getPhone2(){ 78 return phone2; 79 } 80 public void setPhone2(int phone2) { 81 this.phone2 = phone2; 82 } 83 public int getPhone3(){ 84 return phone3; 85 } 86 public void setPhone3(int phone3) { 87 this.phone3 = phone3; 88 } 89 public String getBlood(){ 90 return blood; 91 } 92 public void setBlood(String blood) { 93 this.blood = blood; 94 } 95 public int getBreakfast() { 96 return breakfast; 97 } 98 public void setBreakfast(int breakfast) { 99 this.breakfast = breakfast; 100 } 101 public String getOpinion() { 102 return opinion; 103 } 104 public void setOpinion(String opinion) { 105 this.opinion = opinion; 106 } 107}

jsp

1<%@ page language="java" contentType="text/html;" pageEncoding="UTF-8"%> 2<%@ page import="java.util.List,Look.DataBase"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>アンケートNo入力画面</title> 8<link rel="stylesheet" href="CSS/Look.css"> 9</head> 10<body> 11 <h1>アンケート一覧</h1> 12 13 <form method="post" action="/Look/SearchServlet"> 14 <div id="div1"> 15 <p>アンケートNO:<input type="text" name="No"></p> 16 <p>氏名:<input type="text" name="Name"></p> 17 </div> 18 <input type="submit" name="search" value="検索"> 19 </form> 20 21 <div id="div2"> 22 <form > 23 <input type="button" name="new" value="新規" onClick=""> 24 </form> 25 </div> 26 27 <form method="POST" action="/Look/UpdateServlet"> 28 <table> 29 <tr> 30 <th>アンケートNO</th> 31 <th>氏名</th> 32 <th></th> 33 <th></th> 34 </tr> 35 <% 36 List list = (List)request.getAttribute("list"); 37 for(int i=0 ; i<list.size() ; i++){ 38 DataBase db = (DataBase)list.get(i); 39 %> 40 <tr> 41 <td><%= db.getNo() %></td> 42 <td><%= db.getName() %></td> 43 <td> 44 <input type="submit" name="update" value="変更" > 45 <input type="hidden" name="flag" value="1"> 46 <input type="hidden" name="hiddenNO" value="<%= db.getNo() %>"> 47 </td> 48 <td> 49 50 </td> 51 </tr> 52 <% } %> 53 </table> 54 </form> 55</body> 56</html>

追加です。エラーが出た文をまったく同じように書き直すことによって最初に出ていた箇所のエラーは無くなりました。しかし進んだ別の箇所で同じエラーが出ます。エラーが出ているのはSerchServlet.javaの115行目(◆マーク)です。

servlet

1package Look; 2 3import java.io.IOException; 4import java.sql.Connection; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.sql.Statement; 8import java.util.ArrayList; 9import java.util.List; 10 11import javax.servlet.ServletException; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15 16 17public class SearchServlet extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 21 request.setCharacterEncoding("utf-8"); 22 //受け取ったデータ 23 String No = request.getParameter("No"); 24 String Name = request.getParameter("Name"); 25 //接続準備 26 Connection conn = null; 27 Statement smt = null; 28 29 //接続開始 30 //NOとNAME両方で検索 31 if(No != "" && Name != "") { 32 try { 33 String sql = "SELECT * FROM Information WHERE NO ="+No+"AND (NAME LIKE '"+Name+"%' OR NAME LIKE '%"+Name+"')"; 34 ~中略~ 35 }else if(No != "" && Name == "") { 36 try { 37 String sql = "SELECT * FROM Information WHERE NO ="+No; 38 conn = DBManager.getConnection(); 39 smt = conn.createStatement(); 40 ResultSet rs = smt.executeQuery(sql); 41 List list = new ArrayList(); 42 DataBase db = new DataBase(); 43 44 //画面表示させるためにLISTに格納 45 while(rs.next()) { 46 47 ~中略~ 48 db.setName(rs.getString("name")); 49 50 51 list.add(db); 52 53 } 54 if(list.isEmpty()) { 55 throw new SQLException(); 56 } 57 request.setAttribute("list", list); 58 request.getRequestDispatcher("/jsp/Search.jsp").forward(request, response);//◆◆◆ 59 return; 60 61 62 63 }catch(SQLException e) { 64 request.getRequestDispatcher("/jsp/result.jsp").forward(request, response); 65 return; 66 67 68 }finally { 69 if(smt != null) { 70 try {smt.close();}catch(SQLException ignore) {} 71 } 72 if(conn != null) { 73 try {conn.close();}catch(SQLException ignore) {} 74 } 75 } 76 77      ~中略~ 78 79 }else { 80 //該当がない場合 81 request.getRequestDispatcher("/jsp/result.jsp").forward(request, response); 82 return; 83 } 84 } 85 86} 87

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

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

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

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

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

m.ts10806

2020/09/18 06:34

>Lookクラスの Lookパッケージではないでしょうか。 あとstart.jspの内容もご提示ください。
Y.Mamoru

2020/09/18 06:42

ありがとうございます。 今エラーが出ている文と全く同じものを書き直してみると、正常に動きました。 クリーンもしていたので更新されていなかったわけではないと思うのですが、 反映されていなかったという事なのでしょうか。 理由がわからないです。
m.ts10806

2020/09/18 06:42

ですから、コード全てないと何とも言えないです。
Y.Mamoru

2020/09/18 06:45

いや、すみません。 やはりまだ出ました。 start.jspの内容も載せさせていただきます。
guest

回答1

0

自己解決

解決しました。
該当しそうなファイルのgetNo()メソッドを全てもう一度書き直しました。
やはりgetNo()Iなどの記述はなく、書き直す前と全く同じものができたんですが、エラーは出なくなりました。

投稿2020/09/19 03:57

Y.Mamoru

総合スコア47

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問