2010-02-05 7 views
13

Mam zainstalowany Eclipse z wtyczką Google App Engine i Google App Engine SDK 1.3.0. Utworzyłem nowy projekt internetowy za pomocą pakietu Google App Engine SDK 1.3.0. Teraz chcę dodać bibliotekę dla jakiejś zaawansowanej składni JSTL w pliku jsp, to jest funktory EL (http://el-functors.sourceforge.net). Aby EL-funktorów pickup jego zaawansowany składni w pliku jsp i skompilować je do standardowej składni JSP, muszę dodać jakiś słuchacza do web.xml:Nie można użyć bibliotek zewnętrznych dla projektu Javy Google Engine Javy

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

Również dodałem standar.jar, jstl.jar, el-funktorów-1.0.3.jar do mojej ścieżki budowania. Jednak, kiedy ruszy serwer WWW (używając Debug as> Web projektu), w dzienniku konsoli widzę ten komunikat o błędzie:

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) 

Chyba nie powinno być jakieś przyczyny prowadzą do biblioteki nie jest załadowany . Kiedy przychodzę na wojnę/WEB-INF/lib, nie widzę wersji standard.jar, jstl.jar i el-functors.1.0.3.jar overthere; tylko wdrożone słoiki silników aplikacji Google.

Jaki jest tam problem, jak mogę to naprawić?

Odpowiedz

24

Musisz ręcznie skopiować wymagane słoiki do folderu/WEB-INF/lib.

Stawiałem czoła podobnemu problemowi, zaczynając budować za pomocą silnika aplikacji. Po pewnych badaniach doszedłem do wniosku, że jest to jedyny sposób, aby to zadziałało.

Chciałbym się dowiedzieć, czy się mylę :)

+1

Tak to działa, ale tak naprawdę: czy jest to * TYLKO * sposób na sprawne działanie? Brak kompilacji w stylu Eclipse zarządzanie ścieżkami? war/WEB-INF/lib jest * soooo * prymitywny! –

+0

To działa również dla mnie, ale chciałbym poznać powód, dla którego musimy umieścić słoik pod WEB-INF/lib, nawet jeśli już mamy plik klasy w ścieżce klas? może tryb gwt dev właśnie honoruje klasę/słoik w WEB-INF ? – Mike

+0

To też działa dla mnie. (GSON Library) – ehsun7b

1

Korzystam z narzędzia App Wrench do automatycznego kopiowania słoików do katalogu/WEB-INF/lib. Działa tylko wtedy, gdy nie masz żadnych klas oznaczonych jako @Entity w tym słoiku.

5

Jest łatwy w obsłudze alternatywą dla manualnego zwieńczeniu słoików - Quick Fix

Idź do Markers View, znaleźć odpowiednie ostrzeżenie (Następujące ścieżce klasy wpisu”...), wybierz opcję«szybkiego rozwiązania»z kontekstu menu i kliknij "Kopiuj ... do/WEB-INF/lib i zaktualizuj ścieżkę klas, aby odwołać się do tego słoika"

+0

to działa bardzo dobrze dla mnie, dzięki! – arty