Eclipse中带有Maven的JSF项目为FacesServlet提供了ClassNotFoundException

时间:2012-08-02 08:54:22

标签: eclipse jsf tomcat maven

我在Eclipse中创建了一个Maven项目。从“项目方面”菜单中,我选择了动态Web模块,Java和Java Server Faces。像jsf-api和servlet-api一样成功地从pom.xml中添加了一些依赖项。然后我写了一个简单的Java bean和一个使用bean的xhtml页面。

当我使用“maven clean install”构建war文件并手动将其部署到Tomcat时,它会按预期工作。但是当我从Eclipse中选择“Run on Server”时,会出现以下错误:

SEVERE: Servlet /testjsf1 threw load() exception
java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
        at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525)
        at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507)
        at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:124)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1136)
        at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
        at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5015)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5302)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1566)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1556)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

似乎jsf库在从Eclipse运行时未按预期链接。你对这种行为的原因有什么看法吗?

1 个答案:

答案 0 :(得分:12)

在“项目属性”中 - > “部署程序集”,添加“Java Build Path Entries - > Maven Dependencies”解决了这个问题!