我在WAS控制台中启动应用程序时遇到问题。该应用程序是一个简单的Hello World JSF servlet。
我正在使用Websphere Application Server版本7.0.0.9。
JSF 1.2 with facelets 1.1.14
当我尝试启动应用程序时,我在日志中收到以下错误。知道如何解决这个问题吗?
[15/06/12 15:13:49:747 BST] 00000045 config I Initializing Sun's JavaServer Faces implementation (1.2_07-b03-FCS) for context '/JsfServletDeployTest'
[15/06/12 15:13:49:756 BST] 00000045 webapp E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
java.lang.NoClassDefFoundError: com.sun.faces.config.DbfFactory (initialization failure)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:140)
at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:276)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:175)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1678)
进一步下面的例外:
[15/06/12 15:13:49:771 BST] 00000045 servlet E com.ibm.ws.webcontainer.servlet.ServletWrapper init SRVE0100E: Uncaught init() exception created by servlet Faces Servlet in application JsfServletDeployTest_war: java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: javax.faces.context.FacesContextFactory
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:270)
at javax.faces.webapp.FacesServlet.init(FacesServlet.java:164)
at com.ibm.ws.cache.servlet.ServletWrapper.init(ServletWrapper.java:238)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.init(ServletWrapper.java:358)
答案 0 :(得分:1)
我也遇到了同样的问题,我认为我也得到了答案......
似乎当你的服务器在WPS 7.0上没有JSF(1.2)应用程序的情况下启动时,它不会在类加载器中加载SUN-JSF类。
所以,如果你只是使用JSF 1.2部署你的portlet应用程序它就不会开始工作而无法找到类,因为该类应由服务器引导程序加载。
现在,当您部署了该应用程序并重新启动服务器时,它在初始化JSF1.2应用程序时,还会加载所需的SUN-JSF库。因此,当您单击portlet时,它会加载portlet。
因此,基本上您需要在部署portlet后重新启动服务器。但这应该仅适用于第一个JSF 1.2应用程序。
希望这有帮助。
// HP
答案 1 :(得分:0)
我遇到了同样的问题,调试后发现类路径中缺少'myfaces-api.jar'和'myfaces-impl.jar'。包含它们后,应用程序正常启动而没有任何错误。检查它是否适用于您。