java API保證它永遠不會返回null - 但對我來說,它是!JSP - TransformerFactory.newInstance()。newTransformer(xsl)返回null?
相關代碼:
xml = new StreamSource(new URL(mondialURL).openStream());
xsl = new StreamSource(new File("/REMOVED/countriesnofilter.xsl"));
result = new StreamResult(new PrintWriter(out));
transformer = TransformerFactory.newInstance().newTransformer(xsl);
transformer.transform(xml, result);
由於XML,XSL和結果用新制作的東西,他們-must-含有不爲空,所以它必須是變壓器這一點變得無效。爲什麼會發生這種情況,我該如何解決?
拋出此:
org.apache.jasper.JasperException:異常在JSP:/dca/ass2/a.jsp:46
43: result = new StreamResult(new PrintWriter(out));
44:
45: transformer = TransformerFactory.newInstance().newTransformer(xsl);
46: transformer.transform(xml, result);
47:
48: %>
49: <INPUT TYPE="SUBMIT" VALUE="Get one country">
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)
sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
root cause
java.lang.NullPointerException
org.apache.jsp.dca.ass2.a_jsp._jspService(a_jsp.java:104)
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)
sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244)
java.security.AccessController.doPrivileged(Native Method)
javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276)
org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:162)
編輯:這肯定是該變壓器的情況下莫名其妙。關注:
org.apache.jasper.JasperException:異常的JSP:/dca/ass2/a.jsp:49
46:
47: xml.getInputStream();
48: xsl.getInputStream();
49: transformer.reset();
50:
51: //transformer.transform(xml, result);
52:
並再次將是一個空指針異常。如果是因爲xml爲null,那麼它會拋出一個NPE 47.
編輯2:如果我將newTransformer(xsl)更改爲newTransformer()它可以工作,所以這是newTransformer(xsl)中的一個問題。
爲什麼你確定NPE由此引起'46:transformer.transform(XML,結果);'行?堆棧跟蹤中的行號是否與您提供的列表中的行號匹配? – khachik 2010-11-04 11:52:21
org.apache.jasper.JasperException:JSP中的異常:/dca/ass2/a.jsp:46。 46:transformer.transform(xml,result);.所以NPE是由這條線引起的。 – Patashu 2010-11-04 11:56:32
我有同樣的問題:http://stackoverflow.com/questions/7470263/android-xsl-transformation-null-pointer-but-working-on-desktop。您是否找到了解決方案? – gtiwari333 2011-09-20 05:51:50