2010-02-05 54 views
13

我有一個Eclipse與谷歌App Engine插件和谷歌App Engine SDK 1.3.0上安裝。 我使用Google App Engine SDK 1.3.0創建了一個新的Web項目。 現在,我想爲jsp文件中的一些高級JSTL語法添加一個庫,它是EL-functors(http://el-functors.sourceforge.net)。 爲了EL-函子皮卡在JSP文件中其先進的語法和編譯他們的標準JSP語法,我必須補充一些聽衆到web.xml:不能使用外部庫谷歌應用程序引擎Java項目

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

而且,我已經加入standar.jar, jstl.jar,el-functors-1.0.3.jar到我的構建路徑。 然而,當我開球Web服務器(使用調試方式> Web項目),在控制檯日誌中,我看到此錯誤消息:

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) 

我想應該有一些原因導致庫不加載。 當我來到war/WEB-INF/lib目錄時,我看不到standard.jar,jstl.jar和el-functors.1.0.3.jar。只有谷歌應用程序引擎罐被部署。

那裏有什麼問題,我該如何解決這個問題?

回答

24

您需要手動將所需的jar複製到/ WEB-INF/lib文件夾中。

我在開始使用app-engine構建時遇到了類似的問題。經過一番研究,我得出結論認爲這是實現它的唯一方法。

想知道我是否錯了:)

+1

是的,這是有效的但是真的:它是否是唯一的方式讓它工作?路徑管理?war/WEB-INF/lib是* soooo * primitive! – 2010-11-21 06:25:33

+0

這也適用於我,但我想知道爲什麼我們必須將jar放在WEB-INF/lib下,即使我們已經擁有classpath中的類文件?也許gwt dev模式只是在WEB-INF中遵守類/ jar ? – Mike 2012-03-06 08:15:43

+0

它也適用於我。 (GSON Library) – ehsun7b 2012-06-09 12:50:17

1

我正在使用應用程序扳手工具將jar自動複製到/ WEB-INF/lib目錄中。只有在該jar中沒有任何@Entity標記的類時纔有效。

5

有一個用戶友好的替代品罐的手動應對 - 速戰速決

轉到標記查看,找到適當的警告(以下類路徑條目」 ...),選擇‘從上下文速戰速決’菜單,然後單擊「複製到/ WEB-INF/lib並更新類路徑以引用此jar」

+0

這對我來說很好,謝謝! – arty 2012-08-01 12:17:42