Невозможно использовать внешние библиотеки для 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.