Как обработать отсутствующий метод ExpressionFactory # newInstance () в API, загруженном maven? - PullRequest
3 голосов
/ 05 февраля 2010

Согласно java ee 5 api ExpressionFactory предоставляет метод # newInstance . Я использую официальный javaee-api, доступный в maven: API Java EE 5 теперь в репозитории Maven ...

Но эта банка не обеспечивает этот метод. Поэтому я получаю ошибки компилятора.

Как получить компилируемую версию без использования реализаций javaee, например, например Glassfish, openejb?

Официальный jar Java EE 6.0, предоставленный maven (java.dev.net), содержит этот метод.

Ответы [ 2 ]

3 голосов
/ 05 февраля 2010

Согласно java ee 5 api ExpressionFactory предоставляет метод #newInstance.

Ну, javadoc не является доказательством, и, на самом деле, это очень вероятно, ошибка в Java EE 5 javadoc. Два newInstance() фабричных метода были добавлены в Техническом обзоре 1 JSR-245 (чтобы сделать EL автономным и вывести его из JSP 2.1, взгляните на JSR-245 MR1 Change Log для деталей), но этот обзор никогда не был выпущен .

Поэтому неудивительно, что вы не можете найти этот метод в java-ee связке , доступной в репозитории java.net.

Но этот сосуд не обеспечивает этот метод. Поэтому я получаю ошибки компилятора.

Как и ожидалось. Этот метод не в Java EE 5 (по крайней мере, это мое понимание). Так что вам нужно использовать:

ExpressionFactory factory = new ExpressionFactoryImpl();

Официальный jar Java EE 6.0, предоставленный maven (java.dev.net), содержит этот метод.

Да, потому что это Java EE 6, потому что EL теперь автономен со своей собственной спецификацией (технически EL все еще находится в JSR-245, извините, если это сбивает с толку). Таким образом, Java EE 6 включает в себя EL 2.2 (да, версия перепрыгнула с 1.1 до 2.1.2 , а затем 2.2 для лучшего согласования с версией JSP). И эта версия действительно предоставляет методы newInstance() для ExpressionFactory.

1 голос
/ 05 февраля 2010

Почему вы не хотите использовать библиотеки с сервера Java EE? В конечном итоге вам придется пройти тестирование, даже если вы находитесь на месте. Вы можете использовать Tomcat , его легко установить и использовать.

Например, в Tomcat все файлы jar, обеспечивающие API Java EE, доступны в папке lib. Если вы компилируете с использованием этих библиотек и придерживаетесь стандартного Java EE API , ваш код будет совместим со всеми серверами, которые реализуют Java EE API.

Если вы используете Maven и не хотите, чтобы эти библиотеки были в вашем дереве, и у вас установлен сервер, вы можете использовать system тип зависимости (подробнее см. здесь информация)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...