MyFaces和WebSphere Liberty Profile(ClassNotFoundException)

时间:2016-11-14 07:50:53

标签: jsf-2.2 websphere-liberty myfaces

我已经在WebSphere Liberty Profile(16.0.0.3)上成功部署了我的应用程序,但是当我尝试使用它时,我得到以下异常:

java.lang.ClassNotFoundException: org.apache.myfaces.renderkit.html.HtmlFormRenderer
    at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:488)
    at com.ibm.ws.classloading.internal.AppClassLoader.findClass(AppClassLoader.java:271)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at com.ibm.ws.classloading.internal.AppClassLoader.findOrDelegateLoadClass(AppClassLoader.java:466)
    at com.ibm.ws.classloading.internal.AppClassLoader.loadClass(AppClassLoader.java:438)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:264)
    at pt.sibs.epms.ecc.renderer.HtmlFormRenderer.getRenderer(HtmlFormRenderer.java:54)

在server.xml中启用了JSF 2.2:

<feature>jsf-2.2</feature>

该课程存在于:

wlp/lib/com.ibm.ws.jsf.2.2_1.0.14.jar

关于API类型可见性,我的共享库和应用程序都有spec,ibm-api,api,third-party

如果我尝试配置MyFaces的另一个实现,我开始获得ClassCastException

我需要做些什么来改变这项工作?

2 个答案:

答案 0 :(得分:1)

jsf-2.2功能不会将MyFaces实现类公开为任何类型的api,这就是为什么尝试执行Class.forName不起作用。

答案 1 :(得分:0)

您好,您应该能够使用RendererWrapperRenderKitWrapper的组合来实现自己的渲染器。这些类允许您向现有Renderer和RenderKit实例添加专门的行为。