我创建了一个简单的JSF2.0应用程序,它在我的计算机上运行良好,但是当我尝试在Heroku中运行它时,我收到此错误:
HTTP ERROR 500
Problem accessing /login.xhtml. Reason:
Server Error
Caused by:
java.lang.NullPointerException
at com.sun.faces.context.flash.ELFlash.getFlash(ELFlash.java:93)
at com.sun.faces.context.flash.ELFlash.getELFlash(ELFlash.java:124)
at com.sun.faces.context.flash.ELFlash.doPostPhaseActions(ELFlash.java:722)
at com.sun.faces.lifecycle.Phase.handleAfterPhase(Phase.java:175)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:108)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:311)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:481)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
at org.eclipse.jetty.server.Server.handle(Server.java:349)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
at java.lang.Thread.run(Thread.java:636)
那么,解决这个问题的方法是什么? 提前谢谢。
答案 0 :(得分:2)
java.lang.NullPointerException at com.sun.faces.context.flash.ELFlash.getFlash(ELFlash.java:93) at com.sun.faces.context.flash.ELFlash.getELFlash(ELFlash.java:124)
我不承认ELFlash#getELFlash()
方法是最近Mojarra实现的一部分。也许你正在使用一个非常早期的2.0.0实现,它有一个与此相关的bug。升级到最新版本可以解决这个问题。
如果未正确声明但注释问题在Heroku中仍然存在
javax.el.PropertyNotFoundException: /login.xhtml @15,55 value="#{user.name}": Target Unreachable, identifier 'user' resolved to null at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
faces-config.xml
符合JSF2规范,则JSF2注释将失败。确保<faces-config>
根声明看起来像这样:
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<!-- config here -->
</faces-config>