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

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

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

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

Java

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

Q&A

解決済

3回答

5482閲覧

[Java・jsp]存在しない行で発生したエラーの対応方法について

PAWCOWROW

総合スコア9

JSP

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

Java

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

0グッド

0クリップ

投稿2017/07/19 05:49

編集2017/07/19 06:17

現在学校の授業で制作しているカレンダーページのエラーコードに、明らかに元のソースには存在しない行が指定されており、対応方法がわからず困っています。
お力を貸していいただければ幸いです。
よろしくお願いいたします。
環境
Java 8
Tomcat 8.0.42
Eclipse

An exception occurred processing JSP page /showCalender.jsp at line 41 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.apache.jasper.JasperException: An exception occurred processing JSP page /showCalender.jsp at line 41 38: Year = request.getParameter("YEAR"); 39: Month = request.getParameter("MONTH"); 40: 41: year = Integer.parseInt(Year);//整数化 42: month = Integer.parseInt(Month);//整数化 43: %> 44: <b><%= year %>年<%=month %>月のカレンダー</b> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:579) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.NumberFormatException: null java.lang.Integer.parseInt(Integer.java:542) java.lang.Integer.parseInt(Integer.java:615) org.apache.jsp.showCalender_jsp._jspService(showCalender_jsp.java:153) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

java

1<%@page import="sun.launcher.resources.launcher"%> 2<%@ page language="java" contentType="text/html; charset="UTF-8" 3 pageEncoding="UTF-8"%> 4<%@ page import="java.util.*" %> 5<!DOCTYPE html > 6<% 7int year;//年 8int month;//月 9int i,j;//週間カウンタ、1週間カウンタ 10int setSpace;//月のスタートまでのスペースセット 11int cntDay = 1;//日カウンタ 12int maxDay;//最大日数/月 13int week;//週インデックス 14String Year;//引き渡し年 15String Month;//引き渡し月 16String Day;//日 17String yearMD="00000000"; 18String mark = ""; 19%> 20<html> 21<head> 22<meta charset="UTF-8"> 23<title>カレンダー</title> 24<style type="text/css"> 25<!-- 26 *{padding:5px; margin:0px;} 27 body{text-align:center;} 28 table{width:800px; background:white; border:2px black solid; border-collapse:collapse;} 29 th{border:1px black solid; background:#CCFFFF;} 30 td{border:1px black solid; text-align:right; padding:5px 20px 5px 20px;} 31 br{line-height:1em;} 32--> 33</style> 34</head> 35<body> 36<% 37Calendar cal = Calendar.getInstance(); 38Year = request.getParameter("YEAR"); 39Month = request.getParameter("MONTH"); 40if(Month.length() == 1){ 41 Month = "0" + Month; 42} 43year = Integer.parseInt(Year);//整数化 44month = Integer.parseInt(Month);//整数化 45%> 46<b><%= year %><%=month %>月のカレンダー</b> 47<br/> 48<br/> 49<%= request.getAttribute("calender") %> 50<br/>//50 51<br/> 52<div style="text-align:center;"> 53<table border="1"> 54<tr> 55 <td align="center" width="30" bgcolor="#ffb6c1"></td> 56 <td align="center" width="30" bgcolor="#90ee90"></td> 57 <td align="center" width="30" bgcolor="#90ee90"></td> 58 <td align="center" width="30" bgcolor="#90ee90"></td> 59 <td align="center" width="30" bgcolor="#90ee90"></td> 60 <td align="center" width="30" bgcolor="#90ee90"></td> 61 <td align="center" width="30" bgcolor="#90ee90"></td> 62</tr><% 63cal.set(year,month-1,1); 64maxDay = cal.getActualMinimum(cal.DATE); 65week = cal.get(Calendar.DAY_OF_WEEK); 66for(i = 1;i<=6;i++){ 67 if(cntDay >maxDay )break;//最大日数からオーバーか 68 out.println("<tr align='right'>"); 69 for(j=1;j<=7;j++){ 70 out.println("<td>"); 71 if(cntDay <= 1){ 72 setSpace = week -1; 73 }else{ 74 setSpace = 0; 75 } 76 if(j>setSpace){ 77 Day = Integer.toString(cntDay); 78 if(Day.length() == 1){ 79 Day = "0" + Day; 80 } 81 yearMD = Year + Month + Day;//年月日8桁表示 82 mark = ""; 83 84 85 86%> 87 88<a href="/showAttend.jsp?Ymd=<%=yearMD%>"> 89<%= mark%><%=cntDay %> 90</a> 91<% 92 93 if(cntDay> maxDay){ 94 out.println("</td>"); 95 break; 96 } 97 }else{ 98%> 99 &nbsp; 100<%//100 101 102 } 103 out.println("</td>"); 104 } 105 out.println("</tr>"); 106} 107cntDay = 1;//日カウンタ初期化 108%> 109 110 111</table><br> 112<a href="menu.jsp">メニューへ戻る</a> 113</div> 114</body> 115</html>

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

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

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

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

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

guest

回答3

0

ベストアンサー

エラー情報(スタックトレース)に書かれています。

org.apache.jasper.JasperException: An exception occurred processing JSP page /showCalender.jsp at line 41 38: Year = request.getParameter("YEAR"); 39: Month = request.getParameter("MONTH"); 40: 41: year = Integer.parseInt(Year);//整数化 42: month = Integer.parseInt(Month);//整数化 43: %> 44: <b><%= year %>年<%=month %>月のカレンダー</b>

JSPの41行目でエラーが発生しており、その原因は、

原因 java.lang.NumberFormatException: null java.lang.Integer.parseInt(Integer.java:542)

と、Integer.parseIntを行おうとして例外が出た、と出ていますね。

合わせると、

発生したJSPの行数が 41行目 で、かつ Integer.parseIntを行ったときの例外です。

Integer.parseIntでint型に変換している変数は、38行目にて宣言している Year ですから、38行目にて、Yearが取得できていないのが原因でしょう。

投稿2017/07/19 10:57

A-pZ

総合スコア12011

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

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

0

JSPはJSPそのものに実行能力があるわけでなく、裏でひそかにサーブレットたちが動いている、といった話は学校で習ったことはありますか?
JSPを実行すると勝手に裏で、えらい行数のサーブレットが作成されるんです。

なので、JSPやサーブレットのディレクトリ構成はえらいややこしいんです。
パソコン内のTomcatのフォルダの奥(CATALINA_HOME\webapps)にコンテキストルートがおかれているので、大変ですがエラーが出たファイルを奥の奥までめぐって探してみてください。JspServletWrapper.java:560とかも見つかるはずです。

だいぶアナログで力業な解決方法ですが、最後の手段にどうぞ。
もっと簡単でスマートな修正方法もあるはず。

投稿2017/07/19 06:39

ygoooo

総合スコア71

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

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

0

ひとつの可能性ですが、見てるソースと実行されているプログラムが合ってない場合このようになります。
確認/対応はちゃんと最新が反映されているかどうか確認する(起動までできるのであれば標準出力に最新とわかる文字列を書き出してみる)、少し変更+ビルドしてみてclassファイルなりwarなりが置き換わってるかどうか見る、クリーンビルドする等々で。

投稿2017/07/19 05:53

編集2017/07/19 05:59
kurokoba

総合スコア276

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

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

PAWCOWROW

2017/07/19 06:16

回答ありがとうございます。 ソースを開きなおしたりコンパイルしなおしてみたところ、メッセージが出るようになったので、実行されているファイルが違った可能性がとても高いです。 そのエラーメッセージでは取得(request.getParameter)した年月の情報をInteger.parseIntで整数化しようとした場所が指定されていました。 確認や対応の詳しいやり方ありがとうございます
momon-ga

2017/07/19 06:25 編集

showCalender.jspは、showCalender.jsp?YEAR=2017&MONTH=7のようにアクセスしないと、getParamterがnullなので、上記のエラーが発生しますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問