java.lang.ClassNotFoundException:org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory

时间:2014-05-03 17:08:46

标签: java glassfish omnifaces

当我在服务器GlassFish 4.0上发布应用程序时,我遇到以下异常:

Caused by: java.lang.RuntimeException: 
com.sun.faces.config.ConfigurationException: Factory 'javax.faces.context.ExceptionHandlerFactory' was not configured properly.     
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:273)
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:5362)
at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:743)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:5898)
... 44 more Caused by: com.sun.faces.config.ConfigurationException:
Factory 'javax.faces.context.ExceptionHandlerFactory' was not configured properly.  
at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:330)
at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:236)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:435)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:214)
... 47 more Caused by: javax.faces.FacesException:
org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory  
at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:710)
at javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:572)
at javax.faces.FactoryFinder.access$500(FactoryFinder.java:140)     
at javax.faces.FactoryFinder$FactoryManager.getFactory(FactoryFinder.java:1120)
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:379)     
at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:328)
... 50 more Caused by: java.lang.ClassNotFoundException:
org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory  
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1761)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1611)
at java.lang.Class.forName0(Native Method)  
at java.lang.Class.forName(Class.java:270)  
at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:685)
... 55 more

如何修复错误?

1 个答案:

答案 0 :(得分:1)

  

抛出java.lang.ClassNotFoundException:   org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory

ClassNotFoundException表示所提到的类,或者至少包含所提到的类的JAR文件,不存在于当前运行时类路径中。

当部署为WAR文件时,webapp的运行时类路径包括以下路径:

  • WAR /WEB-INF/classes - 对于松散的.class文件(通常,IDE会自动为项目的src文件夹中的源文件执行此操作。)
  • WAR /WEB-INF/lib - 对于JAR文件(如果您没有使用Maven等依赖关系管理框架,那么您需要手动删除JAR)。
  • 服务器的/lib文件夹 - 用于特定于服务器的库,或者需要在所有Web应用程序中共享的库(文件夹名称取决于所使用的服务器)。
  • JRE(或JDK' s)/lib/lib/ext个文件夹 - 除非你需要修复JRE / JDK 本身的一些错误,否则永远不要放任何东西

通常,您只选择前两个选项。只在WAR中进行,而不是在其他地方进行。

上述类org.omnifaces的包名称暗示它是OmniFaces的一部分。您可以在那里下载JAR,并根据其安装说明,将其放入/WEB-INF/lib


根据你的评论:

  

我在src / main / webapp / WEB-INF / lib中添加了几个库 - omnifaces-1.7.jar和primefaces-4.0.jar后问题解决了。 虽然这些库在classpath中。不确定这个决定是否最佳。

很抱歉,但是你所说的并不是真的。例外清楚地表明它们在类路径中ClassNotFoundException。就那么简单。至少不在任何上述路径中的webapp的运行时类路径中。很可能您错误地为webapp的运行时类路径假定了%CLASSPATH%环境变量或项目的 Build Path 属性。