プロジェクトを運用サーバーにデプロイしたところ、以下のエラーが発生しました。
それはライブプロジェクトなので、エラーが発生した後、これを正常に動作していた以前のバージョンに置き換えましたが、今でも同じエラーがスローされています。問題の可能性を教えてください。
エラー:
HTTP Status 500 - org.Apache.jasper.JasperException: Java.lang.NullPointerException
--------------------------------------------------------------------------------
type Exception report
message org.Apache.jasper.JasperException: Java.lang.NullPointerException
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.Apache.jasper.JasperException: org.Apache.jasper.JasperException: Java.lang.NullPointerException
org.Apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.Java:502)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:412)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:313)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
root cause
org.Apache.jasper.JasperException: Java.lang.NullPointerException
org.Apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.Java:502)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:430)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:313)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
org.Apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.Java:709)
org.Apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.Java:680)
org.Apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.Java:821)
org.Apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.Java:794)
org.Apache.jsp.LPSSuppIndex_jsp._jspService(LPSSuppIndex_jsp.Java:393)
org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:388)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:313)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
root cause
Java.lang.NullPointerException
org.Apache.jsp.error_jsp._jspService(error_jsp.Java:124)
org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:388)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:313)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
org.Apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.Java:709)
org.Apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.Java:680)
org.Apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.Java:821)
org.Apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.Java:794)
org.Apache.jsp.LPSSuppIndex_jsp._jspService(LPSSuppIndex_jsp.Java:393)
org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:388)
org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:313)
org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.Java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.36 logs.
--------------------------------------------------------------------------------
Apache Tomcat/6.0.36
IndexPage.jsp:
<%@ page errorPage="error.jsp"%>
<%@ page import="Java.util.*" %>
<%@ page import = "jdbc.RetrieveLangList,lang.MessageGetter" %>
<%!
HashMap<String, String> langListMap = new HashMap<String, String>();
%>
<%
//Retrieving language MAP
RetrieveLangList objList = new RetrieveLangList();
langListMap = objList.LangList();
Set s = langListMap.entrySet(); // Get hashmap in Set interface to get key and value
Iterator it = s.iterator(); // Move next key and value of HashMap by iterator
String suppLang = "en_US";
suppLang = request.getParameter("suppLanguage");
if (suppLang == null || suppLang.equalsIgnoreCase(""))
suppLang = "en_US";
%>
<html>
<HEAD>
<TITLE> Welcome to </TITLE>
<link rel="SHORTCUT ICON" href="image/H.ico"/>
<LINK href="image/css/Rcontent.css" type="text/css" rel="stylesheet">
</HEAD>
<script language="JavaScript">
function loadPage(list)
{
location.href=list.options[list.selectedIndex].value;
}
</script>
<SCRIPT language="Javascript">
function ValidateForm()
{
//Supplier Number Validation
var supp_number =document.loginForm.uname;
if((supp_number.value=="su")||(supp_number.value=="SU"))
{
return true;
}
var stripped = supp_number.value.replace(/[\(\)\.\-\ ]/g, '');
if((supp_number.value==null)||(supp_number.value==""))
{
alert("<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "Enter_User_ID")%>");
supp_number.focus();
return false;
}
else if (isNaN(parseInt(stripped))) {
alert("<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "Invalid_User_ID")%>");
supp_number.focus();
return false;
}
//Password Validation
var supp_pass =document.loginForm.pass;
if((supp_pass.value==null)||(supp_pass.value==""))
{
alert("<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "Enter_Password")%>");
//alert("Please Enter Password");
supp_pass.focus();
return false;
}
return true;
}
</SCRIPT>
<BODY bgcolor="#C7CACF">
<center>
<table border = "0" bordercolor = "black" style="background-image:url('image/backgroundIndex.jpg');background-repeat:no-repeat" width="1000" HEIGHT = "700" >
<tr height = "60">
<td> </td>
<td> </td>
<td colspan="2">
<form name="form1" >
<TABLE border="0" width = "610">
<TR>
<td width="300" align="right" height="40">
<select name="file" size="1" onchange="loadPage(this.form.elements[0])" target="_parent._top" onmouseclick="this.focus()" style="background-color: #ffffff;width:150px;"> <!-- This is language selection box -->
<%
while (it.hasNext())
{
Map.Entry m = (Map.Entry) it.next(); // key=value separator this by Map.Entry to get key and value
//System.out.println("value : "+m.getValue()+" key : "+m.getKey());
if(suppLang.equals(m.getKey()))
{
%>
<option value="LPSSuppIndex.jsp?suppLanguage=<%= m.getKey()%>" selected="selected"><%= m.getValue()%></option>
<%
}
else
{
%>
<option value="LPSSuppIndex.jsp?suppLanguage=<%= m.getKey()%>"><%= m.getValue()%></option>
<%
}
}
%>
</select>
</td>
<td width = "300px" align="right"><a HREF="mailto:?subject=<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "sub_contact")%>&body=<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line1_contact")%>, %0D%0D%0D<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line2_contact")%>, %0D%0D%0D<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line3_contact")%>%0D%0D%0D"><font color="#73767B" size="2"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "contact")%></font></a><font color="#73767B"><B> |</B></font><a href="http://www..com/en/service/imprint-legal-issues.html"><font color="#73767B" size="2"> <%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "imprint_legel_issue")%></font></a><font color="#73767B"><B> | </B></font><a href="http://www..com/en/service/sitemap.html"><font color="#73767B" size="2"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "sitemap")%></font></a></td>
</TR>
<TR height="12px">
<TD colspan="2"> </TD>
</TR>
</TABLE>
</form>
</td>
</tr>
<tr>
<td height = "240px" valign="top">
<TABLE border="0" width = "195">
<TR>
<TD height="40" width="155" align="left"><div style="position:relative;left: 20px;"><a href="LPSSuppIndex.jsp"><font color="#73767B" size="3"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "home")%></font></a></div></TD>
</TR>
<TR>
<TD height="37" align="left"><div style="position:relative;left: 20px;"><A HREF="mailto:[email protected]?subject=<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "sub_contact")%>&body=<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line1_contact")%>, %0D%0D%0D<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line2_contact")%>, %0D%0D%0D<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line3_contact")%>%0D%0D%0D"><font color="#73767B"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "contact")%></font></a></div></TD>
</TR>
<TR>
<TD height="35" align="left"><div style="position:relative;left: 20px;"><a href="LPSSuppIndex.jsp"><font color="#73767B" size="3"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "log_in")%></font></a></div></TD>
</TR>
<TR>
<TD height="34" align="left"> <a href="http://wwwcom"><font color="white" style="font-family:Arial, Helvetica, sans-serif;font-size: 10pt; font-weight: bold"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "tportal")%></font></a></TD>
</TR>
<TR>
<TD height = "32" align="center"> </TD>
</TR>
<TR>
<TD height = "43px" colspan="2" align="center"> </TD>
</TR>
</TABLE>
</td>
<td colspan="2"> </td>
<td rowspan="3" valign="top">
<table border="0px" >
<tr height="139px"><td> </td><td> </td></tr>
<tr height="431px">
<td valign="top" width="8px"><div class="vertical-line" style="position:relative;left:27px;top:0px;"></div></td>
<td valign="top">
<!-- START RIGHT CONTENT -->
<DIV class="cntr_cnt_gradbox" style="position: relative;left: 15px;top: -5px;">
<DIV class="cntr_head"><font size="2%"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "PDF_download")%> </font></DIV>
<DIV class="cntr_cnt_gradbox_inner">
<DIV class="cntr_frame" style="height: 60px;">
<DIV style="FLOAT: left;height: 50px;" >
<IMG src="image/PDF_Thumbnail_50x50.gif" border="0">
</DIV>
<DIV class="cntr_dl_cnt" style="MARGIN-LEFT: 55px;">
<A class="cntr_lnk" href="PDF/User Maner_EN.pdf" target="_blank"><font color="#73767B" size="2%"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "manual_en")%></font></A>
</DIV>
<BR class="clr">
</DIV>
<BR class="clr">
<DIV class="cntr_frame" style="height: 60px;">
<DIV style="FLOAT: left;height: 50px;" >
<IMG src="image/PDF_Thumbnail_50x50.gif" border="0">
</DIV>
<DIV class="cntr_dl_cnt" style="MARGIN-LEFT: 55px;">
<A class="cntr_lnk" href="PDF/Benutzerhl Printer_DE.pdf" target="_blank"><font color="#73767B" size="2%"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "manual_de")%></font></A>
</DIV>
<BR class="clr">
</DIV>
<BR class="clr">
<DIV class="cntr_frame" style="height: 60px;">
<DIV style="FLOAT: left;height: 50px;" >
<IMG src="image/PDF_Thumbnail_50x50.gif" border="0">
</DIV>
<DIV class="cntr_dl_cnt" style="MARGIN-LEFT: 55px;">
<A class="cntr_lnk" href="PDF/Print_Specification.pdf" target="_blank" title="<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "printHelp_tip")%>"><font color="#73767B" size="2%"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "printHelp")%></font></A>
</DIV>
<BR class="clr">
</DIV>
<DIV class="cntr_frame1" style="height: 30px;">
<div style="margin-left: 30px;"> <A class="cntr_lnk" href="PDF/quick_guide_en.pdf" target="_blank"><font color="#73767B" size="2%"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "one_point_lessons")%> - EN</font></A></div>
</DIV>
<DIV class="cntr_frame1" style="height: 30px;">
<div style="margin-left: 30px;"> <A class="cntr_lnk" href="PDF/quick_guide_de.pdf" target="_blank"><font color="#73767B" size="2%"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "one_point_lessons")%> - DE</font></A></div>
</DIV>
<DIV style="height: 30px;vertical-align: middle;">
<div style="margin-left: 30px;"> <A class="cntr_lnk" href="PDF/FAQ.pdf" target="_blank"><font color="#73767B" size="2%">FAQ</font></A></div>
</DIV>
</DIV>
</DIV>
</td>
</tr>
</table>
</td>
</tr>
<tr height = "210">
<td> </td>
<td> </td>
<td>
<form method="post" name="loginForm" action="./loginServlet" onsubmit="return ValidateForm()">
<input type="hidden" name="selectedLang" value="<%=suppLang%>" >
<TABLE border="0" bordercolor="black" width="370">
<tr><td rowspan="6" width = "30"> </td></tr>
<TR height="45">
<td width="110" ><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "user_id")%> : </td><!-- This is Supplier Number(User ID) entry field. -->
<td width="230" align="center"><input type="text" size="25" name="uname" style="border-color: #529DFA;" maxlength="10"></td>
</TR>
<TR>
<td height="45"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "Password")%> : </td><!-- This is Password entry field. -->
<td align="center"><input type="password" size="25" name="pass" style="border-color: #529DFA;"></td>
</TR>
<TR height="40">
<td> </td>
<td align ="center" height="40"><A HREF="[email protected]?subject=<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "sub_forget_password")%>&body=<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line1_forget_password")%>, %0D%0D%0D<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "body_line2_forget_password")%>%0D%0D%0D"><%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "forget_password")%></A>
</td>
</TR>
<TR>
<td height="40" align="right"><input type="Submit" value="<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "log_in")%>" /> </td>
<td align="center"><input type="button" onClick="location.href='register/suppRegistration.jsp?selectedLang=<%=suppLang%>'" value="<%=MessageGetter.getMessage("lang.MessagesBundle", suppLang, "new_user")%>" /></td>
</TR>
</TABLE></form>
</td>
</tr>
<tr height = "114">
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td width = "200"> </td>
<td width="170"> </td>
<td width="380"> </td>
<td width="230" align="center"> </td>
</tr>
</table>
</center>
</BODY>
</HTML>
Tomcatでは、アプリケーション内のすべてのjspファイルに対して.Javaファイルと.classファイルが作成され、同じファイルが以下のパスApache-Tomcat\work\Catalina\localhost\'ApplicationName'\org\Apache\jsp\index_jsp.Java
から見つかります。
あなたの場合、jsp名はerror.jspなので、パスは以下のようなものでなければなりませんApache-Tomcat\work\Catalina\localhost\'ApplicationName'\org\Apache\jsp\error_jsp.Java
124行目でnullオブジェクトにアクセスしようとすると、nullポインタ例外が発生します。
JSPでのNullPointerException も発生する可能性があります:
ゲッターは非パブリック内部クラスを返します。
Gettersのアクセス修飾子を削除するか、プライベートまたは保護すると、このコードは失敗します。
Java:
package com.myPackage;
public class MyClass{
//: Must be public or you will get:
//: org.Apache.jasper.JasperException:
//: Java.lang.NullPointerException
public class Getters{
public String
myProperty(){ return(my_property); }
};;
//: JSP EL can only access functions:
private Getters _get;
public Getters get(){ return _get; }
private String
my_property;
public MyClass(String my_property){
super();
this.my_property = my_property;
_get = new Getters();
};;
};;
JSP
<%@ taglib uri ="http://Java.Sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="com.myPackage.MyClass" %>
<%
MyClass inst = new MyClass("[PROP_VALUE]");
pageContext.setAttribute("my_inst", inst );
%><html lang="en"><body>
${ my_inst.get().myProperty() }
</body></html>