Maven java.lang.ClassNotFoundException:com.sun.facelets.tag.jsf.ComponentHandler从MyFaces 1.1升级到MyFaces 2.2后

Maven java.lang.ClassNotFoundException:com.sun.facelets.tag.jsf.ComponentHandler从MyFaces 1.1升级到MyFaces 2.2后,maven,jsf-2.2,myfaces,tomahawk,Maven,Jsf 2.2,Myfaces,Tomahawk,我正在尝试将web应用程序从MyFaces1.1迁移到2.2 我基本上遵循了从基本更改到从JSF 1.1升级到JSF 2.2的第一步: 更新web.xml 更新faces-config.xml 用2.2版JAR替换旧的myfaces JAR 目前,我打算保留JSP,一旦第一个升级JSF的步骤成功,就用facelet替换它们 web应用程序使用旧的JSF版本,但在完成上述步骤后,我得到以下错误和堆栈跟踪: java.lang.NoClassDefFoundError: com/sun/facele

我正在尝试将web应用程序从MyFaces1.1迁移到2.2

我基本上遵循了从基本更改到从JSF 1.1升级到JSF 2.2的第一步:

更新web.xml 更新faces-config.xml 用2.2版JAR替换旧的myfaces JAR 目前,我打算保留JSP,一旦第一个升级JSF的步骤成功,就用facelet替换它们

web应用程序使用旧的JSF版本,但在完成上述步骤后,我得到以下错误和堆栈跟踪:

java.lang.NoClassDefFoundError: com/sun/facelets/tag/jsf/ComponentHandler
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1191)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.myfaces.shared.util.ClassUtils.classForName(ClassUtils.java:187)
    at org.apache.myfaces.view.facelets.util.ReflectionUtil.forName(ReflectionUtil.java:66)
    at org.apache.myfaces.view.facelets.compiler.TagLibraryConfig.createClass(TagLibraryConfig.java:539)
    at org.apache.myfaces.view.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:466)
    at org.apache.myfaces.view.facelets.compiler.FaceletsCompilerSupport.loadLibraries(FaceletsCompilerSupport.java:157)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.loadLibraries(FaceletViewDeclarationLanguage.java:2526)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.createCompiler(FaceletViewDeclarationLanguage.java:2172)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.initialize(FaceletViewDeclarationLanguage.java:2464)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.<init>(FaceletViewDeclarationLanguage.java:309)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguageStrategy.<init>(FaceletViewDeclarationLanguageStrategy.java:52)
    at org.apache.myfaces.view.ViewDeclarationLanguageFactoryImpl.initialize(ViewDeclarationLanguageFactoryImpl.java:104)
    at org.apache.myfaces.view.ViewDeclarationLanguageFactoryImpl.getViewDeclarationLanguage(ViewDeclarationLanguageFactoryImpl.java:73)
    at org.apache.myfaces.application.ViewHandlerImpl.getViewDeclarationLanguage(ViewHandlerImpl.java:183)
    at org.apache.myfaces.application.ViewHandlerImpl.createView(ViewHandlerImpl.java:255)
    at org.jenia.faces.template.handler.ViewHandler.createView(ViewHandler.java:251)
    at javax.faces.application.ViewHandlerWrapper.createView(ViewHandlerWrapper.java:100)
    at org.apache.myfaces.tomahawk.application.ResourceViewHandlerWrapper.createView(ResourceViewHandlerWrapper.java:70)
    at org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:289)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:467)
    at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:412)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:201)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.sun.facelets.tag.jsf.ComponentHandler
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    ... 54 more

java.lang.NullPointerException
    at net.sf.jsfcomp.chartcreator.ChartListener.afterPhase(ChartListener.java:42)
    at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:117)
    at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:211)
    at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:489)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339)
    at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:467)
    at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:412)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:201)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
我们使用Tomcat7作为servlet容器,IntelliJ Community Edition作为IDE,Maven作为构建管理器和依赖关系管理器

由于Tomahawk出现在堆栈跟踪中,我将/WEB-INF/lib中的Tomahawk-1.1.9.jar替换为Tomahawk 21-1.1.14.jar。不幸的是,它没有解决问题

我也找不到专门用于JSF2.2的tomahawk版本,无论是在maven存储库中还是在其他任何地方

使用tomahawk和MyFaces 2.2有必要吗


还是错误源于其他原因?

从stacktrace,我怀疑是另一个特定于JSF 1.x的库导致了这种情况:

at org.jenia.faces.template.handler.ViewHandler.createView(ViewHandler.java:251)

因此,请检查“jenia”库是什么,并获取与JSF2兼容的更新版本或将其删除。

您确定tomahawk-1.x还不存在吗?检查一下:org.jenia.faces.template.handler.ViewHandler.CreateViewHandler.java:251。。。杰尼亚???和net.sf.jsfcomp.chartcreator.?@Kukeltje感谢您的回复。是的,我刚刚验证了除了tomahawk21-1.1.14.jar之外,/WEB-INF/lib目录中没有其他tomahawk库。我不知道这个jenia taglib是什么-继承古老代码并更新它的乐趣-但是当我删除它时,我在Tomcat servlet容器上部署webapp时出错。我们显然使用的jenia动态库来自,我们从该库中使用的仅有两个标记是jp:popupFrame和jp:closePopupFrame。根据我的判断,我想这个库没有与JSF2兼容的版本。因此,我将尝试删除这些标记的所有用法,删除taglib,看看它是否有效。谢谢你指出这一点@杰尼亚图书馆确实是罪魁祸首!删除它后,错误消失了。再次感谢您指出这一点!如果你读了stacktrace很容易找到。。。这将节省你很多时间张贴一个问题和我们的时间了!!!请从中学习!