OC4J 10.1.3 и конфликт языка выражений (EL) - PullRequest
0 голосов
/ 09 февраля 2012

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

Проблема в том, что мы получаем это:

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, в противном случае перестроение будет стоить слишком дороговсе страницы. Как мне решить эту проблему?

1 Ответ

4 голосов
/ 09 февраля 2012

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.

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

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

...