带有Maven的Eclipse中的JSF项目为FacesServlet提供了ClassNotFoundException [英] JSF Project in Eclipse with Maven gives ClassNotFoundException for FacesServlet

查看:55
本文介绍了带有Maven的Eclipse中的JSF项目为FacesServlet提供了ClassNotFoundException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在Eclipse中创建了一个Maven项目.从项目构面"菜单中,我选择了动态Web模块,Java和Java Server Faces.从pom.xml成功添加了一些依赖项,例如jsf-api和servlet-api.然后,我编写了一个简单的Java Bean和一个使用该Bean的xhtml页面.

I've created a Maven project in Eclipse. From "project facets" menu I selected Dynamic Web Module, Java and Java Server Faces. Added some dependencies from pom.xml successfully like jsf-api and servlet-api. Then I wrote a simple Java bean and an xhtml page that uses the bean.

当我使用"maven clean install"构建war文件并将其手动部署到Tomcat时,它会按预期工作.但是,当我从Eclipse中选择在服务器上运行"时,会出现以下错误:

When I build war file with "maven clean install" and deploy it to Tomcat manually, it works as expected. But when I select "Run on Server" from Eclipse it gives the following error:

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)

当从Eclipse运行jsf库时,似乎未按预期链接jsf库.您对这种行为的原因有任何想法吗?

It seems jsf libraries are not linked as expected when it is run from Eclipse. Do you have any idea about the cause of this behaviour?

推荐答案

在项目属性"->部署程序集"中,添加"Java构建路径条目-> Maven依赖项"即可解决问题!

In "Project Properties" -> "Deployment Assembly", adding "Java Build Path Entries -> Maven Dependencies" solves the problem!

这篇关于带有Maven的Eclipse中的JSF项目为FacesServlet提供了ClassNotFoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆