我们最近从WAS6迁移到了WAS7。我们的一个应用程序在WAS6中运行得很好,但在WAS7中却无法运行,出现了以下错误。
java.lang.NoSuchMethodError: com/sun/faces/util/Util.verifyFactoriesAndInitDefaultRenderKit(Ljavax/servlet/ServletContext;)V
at com.ibm.faces.context.MultipartFacesContextFactoryImpl.getFacesContext(MultipartFacesContextFactoryImpl.java:73)
给出错误的代码是
FacesContextFactory contextFactory = (FacesContextFactory)
FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
facesContext = contextFactory.getFacesContext(
request.getSession().getServletContext(), request, response, lifecycle);
在WAS6与WAS7中调试应用程序时发现了这些信息contextfactory:com.ibm.faces.context.MultipartFacesContextFactoryImpl-JSF-ibm.jar-WAS7contextfactory:com.icesoft.faces.context.FacesContextFactoryImpl-icefaces.jar-WAS6
我尝试了一些建议,比如创建一个共享Lib并将其与EAR关联,以及将类加载器方案从"Parent Last"更改为"Parent First"。
但无论我做什么,在WAS7中,我都会得到MultipartFacesContextFactoryImpl作为contextFactory的值。
我试着用1.8版本的icefaces.jar和icefaces-comps.jar替换1.7.2,但结果仍然一样。
请帮忙。如果你需要更多的细节,请告诉我。
可能是WAS6使用Java 5作为本机,而WAS7使用Java 6。尝试使用Java6重新编译类。