2010-02-05 56 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