こんにちは、私は頭痛の種となる作業用の生産的な Web アプリケーションの開発バージョンを持っています。ログインすると、admin.jsp がフォルダー構造を表示しようとしているときに、次のエラーが発生します。
org.apache.jasper.JasperException: Exception in JSP: /admin/admin.jsp:133
130: GenDisplay display = null;
131: if(null==oldDisplay || true==oldDisplay.checkIsOld()) {
132: display = new GenDisplay(oldDisplay);
133: display.genTree(((CompanySession)ppa).getRootOrdner(), ((CompanySession)ppa).getRootType(), user.getUID(), out);
134: ((CompanySession)ppa).setGenDisplay(display);
135: } else {
136: display = oldDisplay;
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:451)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
root cause
java.lang.NullPointerException
ppa.admin.GenDisplay.getKey(GenDisplay.java:185)
ppa.admin.GenDisplay.isOpen(GenDisplay.java:161)
ppa.admin.GenDisplay.genSubTree(GenDisplay.java:49)
ppa.admin.GenDisplay.genSubTree(GenDisplay.java:57)
ppa.admin.GenDisplay.genSubTree(GenDisplay.java:57)
ppa.admin.GenDisplay.genSubTree(GenDisplay.java:57)
ppa.admin.GenDisplay.genTree(GenDisplay.java:42)
org.apache.jsp.admin.admin_jsp._jspService(admin_jsp.java:606)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
これは、エラーを生成するための行 606 コードブロック付近の admin_jsp.java です。
GenDisplay oldDisplay = ((CompanySession)ppa).getGenDisplay();
GenDisplay display = null;
if(null==oldDisplay || true==oldDisplay.checkIsOld()) {
display = new GenDisplay(oldDisplay);
display.genTree(((CompanySession)ppa).getRootOrdner(), ((CompanySession)ppa).getRootType(), user.getUID(), out);
((CompanySession)ppa).setGenDisplay(display);
} else {
display = oldDisplay;
}
//out.println(((CompanySession)ppa).getRootOrdner());
//
int currentOrdner = ((CompanySession)ppa).getRootOrdner();
int currentOrdnerType = ((CompanySession)ppa).getRootType();
if(null!=oldDisplay) {
currentOrdner = oldDisplay.getCurrentOrdner();
currentOrdnerType = oldDisplay.getCurrentOrdnerType();
} else {
display.openOrdner(((CompanySession)ppa).getRootOrdner(), ((CompanySession)ppa).getRootType());
}
そこで、display.genTree() に渡された変数の 1 つが null であるとソートしました。それが NullPointerException の理由です。この開発は、実際の製品版から正確にコピーされたものですが、製品版ではなくここでエラーをスローするのはなぜですか? 私は困惑しています。誰かアイデアがありますか?前もって感謝します!
ps: Java版、Tomcat版、コンパイラ版を比較しました。両方の tomcat で同じ設定を再確立しました。mysql サーバーのバージョンと設定を比較しました。それらはほぼ同じバージョンと設定です。関連するソフトウェアとの大きなリリースの違いはありません。Tomcat (6,7) の新しいバージョンを試してみたところ、さまざまなエラーが発生したため、さらに混乱しました。私は webapp を書いたことがなく、Java も初めてなので、本当に助けが必要です。