Невозможно использовать внешние библиотеки для java-проекта для Google App Engine

У меня есть Eclipse с плагином Google App Engine и Google App Engine SDK 1.3.0. Я создал новый веб-проект с Google App Engine SDK 1.3.0. Теперь я хочу добавить библиотеку для некоторого расширенного синтаксиса JSTL в файл jsp, это EL-функторы (http://el-functors.sourceforge.net). Чтобы EL-функторы могли получить свой расширенный синтаксис в jsp файле и скомпилировать их в стандартный синтаксис jsp, я должен добавить некоторый прослушиватель в web.xml:

<listener>
  <listener-class>beanface.el.functor.InstallFunctorListener</listener-class>
</listener>

Кроме того, я добавил standart.jar, jstl.jar, el-functors-1.0.3.jar в мой путь сборки. Однако, когда я запускаю веб-сервер (используя Debug As > Web Project), в журнале консоли я вижу это сообщение об ошибке:

Initializing AppEngine server
Feb 5, 2010 7:22:45 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: Could not instantiate listener beanface.el.functor.InstallFunctorListener
java.lang.ClassNotFoundException: beanface.el.functor.InstallFunctorListener
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at ........
    at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:421)
    at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1035)
    at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:783)
    at com.google.gwt.dev.DevMode.main(DevMode.java:275)

Я предполагаю, что некоторые причины приводят к тому, что библиотека не загружается. Когда я прихожу на войну /WEB -INF/lib, я не вижу стандартного. Jar, jstl.jar и el-functors.1.0.3.jar; развернуты только javascript-приложения.

В чем проблема, как я могу это исправить?

Ответы

Ответ 1

Вам необходимо скопировать необходимые банку в папку /WEB -INF/lib вручную.

Я столкнулся с подобной проблемой при запуске с помощью приложения-движка. После некоторых исследований я пришел к выводу, что это единственный способ заставить его работать.

Хотелось бы знать, если я ошибаюсь:)

Ответ 2

Существует удобная альтернатива ручному управлению банками - быстрое исправление

Перейдите в "Обзор маркеров", найдите соответствующее предупреждение (Следующая запись в classpath "...), выберите" быстрое исправление "в контекстном меню и нажмите" копировать.. в /WEB -INF/lib "и обновите путь к ссылке эта банка"

Ответ 3

Я использую инструмент App Wrench, чтобы автоматически копировать банки в каталог /WEB -INF/lib. Работает только в том случае, если в этой банке нет классов, отмеченных символом @Entity.