0

ポートレットの .jsp ページでアプレットを接続すると、この後に例外がスローされます ポートレット システムは Liferay です

「「ポートレットの名前」は一時的に利用できません。」ページに表示されます。

アプレットの html/jsp コード:

<APPLET name="SignApplet" mayscript code="SignApplet.class" 
archive="<%=renderResponse.encodeURL(renderRequest.getContextPath() + "/lib/SignApplet.jar")%>, 
<%=renderResponse.encodeURL(renderRequest.getContextPath() + "/lib/crypto.tsp.jar")%>, 
<%=renderResponse.encodeURL(renderRequest.getContextPath() + "/lib/crypto.gammaprov.jar")%>"
height=500 width=500 style="display:none;">
    <PARAM NAME="file" VALUE="<%
    byte[] array = (byte[])session.getAttribute("downloadedFile");
    out.print(new String(array));
           %>" />
</APPLET>

jsp の名前は LoadXLS です。ログは次のとおりです。

ApplicationDispatcher[/ExecutePortlet] PWC1231: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
    at java.lang.String.<init>(String.java:602)
    at org.apache.jsp.WEB_002dINF.jsp.LoadXLS_jsp._jspService(LoadXLS_jsp.java:232)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:113)
...

04:18:44,421 ERROR [PortletRequestDispatcherImpl:137] org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.JasperException: java.lang.NullPointerException
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:113)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)
...


04:18:44,421 ERROR [PortletServlet:97] javax.portlet.PortletException: org.apache.jasper.JasperException: java.lang.NullPointerException
javax.portlet.PortletException: org.apache.jasper.JasperException: java.lang.NullPointerException
    at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:139)
    at com.test.ExecutePortlet.doView(ExecutePortlet.java:249)
    at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
    at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
...


ApplicationDispatcher[/ExecutePortlet] PWC1231: Servlet.service() for servlet ExecutePortlet Servlet threw exception
javax.portlet.PortletException: org.apache.jasper.JasperException: java.lang.NullPointerException
    at com.liferay.portlet.PortletRequestDispatcherImpl.include(PortletRequestDispatcherImpl.java:139)
    at com.test.ExecutePortlet.doView(ExecutePortlet.java:249)
    at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
    at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
...

04:18:44,437 ERROR [render_portlet_jsp:154] java.lang.NullPointerException
    at java.lang.String.<init>(String.java:602)
    at org.apache.jsp.WEB_002dINF.jsp.LoadXLS_jsp._jspService(LoadXLS_jsp.java:232)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
...
4

1 に答える 1

2

スタックトレースから、Tomcat を使用しているようです。Tomcat で NullpointerException の実際の場所を見つける良い方法は、JSP コンパイラが生成する中間コード (通常は Tomcat の作業フォルダ) に移動することです - tomcat/work/ に移動します。 Catalina/localhost/your-web-app-name/org/apache/jsp/... で、JSP から生成された Java コードを見つけます (スタック トレースからは、LoadXLS_jsp.java という名前が付けられます ("Catalina/localhost" はデフォルトのフォルダー - セットアップによって異なる場合があります)

スタックトレースによると、NullpointerException は 232 行目で発生します ( at org.apache.jsp.WEB_002dINF.jsp.LoadXLS_jsp._jspService(LoadXLS_jsp.java:232) )。ファイル全体が機械で生成されたものであり、十分に読み取り可能ではありませんが、元の JSP にマップするのは非常に簡単なはずです。

私の賭けは-dragon66があなたの質問へのコメントで言っているように- session.getAttribute("downloadedFile") がnullであるため、使用するコンストラクターにout.print(new String(array));はnull値が渡されます。この行at java.lang.String.<init>(String.java:602)は、NullpointerException が発生した場所が String コンストラクターであることを示していますが、次の行 (呼び出しメソッドなど) は、文字列コンストラクターが呼び出された場所を示しています。

于 2012-04-27T09:02:13.947 に答える