2012-02-08 2 views
0

Я работаю над проектом, который в настоящее время переносится с Apache Tomcat 6 на OC4J (из-за спецификаций клиента).OC4J 10.1.3 и конфликт языка выражения (EL)

Проблема заключается в том, что мы получаем это:

2012-02-08 18: 23: 53,091 УВЕДОМЛЕНИЕ J2EE JSP-0008 Ошибка: Исключение Oracle.classloader.util.AnnotatedNoClassDefFoundError:

Class not found: javax.el.ELException 

Classe dependente: oracle.jsp.parse.JspBeanInfo 
     Carregador: oc4j:10.1.3 
    Origem do Código: /C:/Users/cvgpb/Desktop/Oracle-OC4J/j2ee/home/lib/ojsp.jar 
    Configuração: <code-source> in META-INF/boot.xml in C:\Users\cvgpb\Desktop\Oracle-OC4J\j2ee\home\oc4j.jar 

Мы используем, как видим, OC4J 10.1.3. Почти каждая страница проекта использует ELs ... Единственная альтернатива - использовать скрипты, но это займет много времени.

Мы должны использовать EL и OC4J 10.1.3, иначе это будет стоить слишком много, чтобы перестроить все страницы. Как я могу это решить?

ответ

4

javax.el.ELException представлен в JSP/EL 2.1, который идет рука об руку с Servlet 2.5, который является частью Java EE 5. Tomcat 6.0 является контейнером, совместимым с Servlet 2.5.

OC4J 10.1.3, однако, является древним контейнером J2EE 1.4, поддерживающим только Servlet 2.4.

Пока объявлен ваш WebApp-х web.xml соответствует Servlet 2.4, весь код программируется против Servlet 2.4/JSP 2.0 API, то /WEB-INF/lib делает не содержат servletcontainer специальные библиотеки, такие как копия jsp-api.jar от Tomcat 6, и webapp работает отлично на Tomcat 5.5 (который также является контейнером Servlet 2.4), тогда он должен теоретически работать как хорошо на OC4J 10.1.3.

Эта конкретная ошибка указывает на то, что у вас есть библиотеки в /WEB-INF/lib, которые либо скопированы из Tomcat 6, либо имеют зависимые от Сервлета 2.5 зависимости, например, JSF 2.0. Очистите /WEB-INF/lib и/или уменьшите задействованные библиотеки до совместимых с Servlet 2.4 версий.

+0

Спасибо за ответ. Теперь нам удается понизить рейтинги библиотек =/ –

+0

Добро пожаловать. Другой вариант - обновить или заменить OC4J совместимым с Servlet 2.5. Сервлет 2.4 - это действительно конец жизни надолго. Я бы поговорил с serveradmins о том, что они в основном работают с oudated/dead software. – BalusC