У меня есть приложение JSF 1.2, которое я собираюсь развернуть в Weblogic 10.3.4.В локальной среде Tomcat все работает нормально.Но когда я пытаюсь развернуть его в weblogic, я получаю ClassNotFoundException
на javax.el.ELContextListener
.Когда я добавляю файл el-api.jar
, я получаю LinkageError: loader constraint violation
на javax.EL.ELResolver
.Это смертельный порочный круг.
Сначала я попытался развернуть его как WAR.Затем я создал корпоративный проект, чтобы можно было развернуть его как EAR, но это не решило проблему.Моя EAR структура файла в порядке.
Сначала я получил ошибку ниже,
Caused By: java.lang.ClassNotFoundException: javax.el.ELContextListener
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:179)
Когда я добавляю el-api-2.2.jar
к /WEB-INF/lib
WAR или /APP-INF/lib
EAR, тогда я получаю ошибку constarint загрузчика;
com.sun.faces.config.ConfigureListener failed: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)V" the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ELResolver used in the signature.
java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.addELResolver(Ljavax/el/ELResolver;)V" the class loader (instance of weblogic/utils/classloaders/GenericClassLoader) of the current class, com/sun/faces/config/ConfigureListener, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ELResolver used in the signature
at com.sun.faces.config.ConfigureListener.registerELResolverAndListenerWithJsp(ConfigureListener.java:582)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:212)
В чем проблема?Я изменил свой порядок пути к классам, но результат был тот же.Мой web.xml
объявлен как Servlet 2.5, и у меня есть следующие JAR в /WEB-INF/lib
:
- commons-beanutils-1.7.0.jar
- commons-collection-3.2.jar
- commons-digester-1.8.jar
- commons-logging-1.0.4.jar
- darkX-3.3.3.Final.jar
- glassX-3.3.3.Final.jar
- jsf-api.jar
- jsf-impl.jar
- jstl-1.2.jar
- laguna-3.3.3.Final.jar
- log4j-1.2.14.jar
- poi-3.7-20101029.jar
- кварц-все-1.8.4.jar
- richfaces-api-3.3.3.Final.jar
- richfaces-impl-3.3.3.Final.jar
- richfaces-ui-3.3.3.Final.jar
- scjd12.jar
- slf4j-api-1.6.0.jar
- slf4j-log4j12-1.6.0.jar
- themes-3.3.3.Final.jar