eclipse - 使用 Maven 的 Eclipse 中的 JSF 项目为 FacesServlet 提供 ClassNotFoundException

标签 eclipse jsf tomcat maven

我已经在 Eclipse 中创建了一个 Maven 项目。从“project facets”菜单中,我选择了 Dynamic Web Module、Java 和 Java Server Faces。从 pom.xml 成功添加了一些依赖项,如 jsf-api 和 servlet-api。然后我编写了一个简单的 Java bean 和一个使用该 bean 的 xhtml 页面。

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

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 库似乎没有按预期链接。您知道这种行为的原因吗?

最佳答案

在“Project Properties”->“Deployment Assembly”中,添加“Java Build Path Entries -> Maven Dependencies”即可解决问题!

关于eclipse - 使用 Maven 的 Eclipse 中的 JSF 项目为 FacesServlet 提供 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774097/

相关文章:

windows - 由于 'ñ",无法使用 Maven 编译 XMLBean 生成的类

java - 为什么这个 JSF 表达式不起作用?

Tomcat8 使用应用程序作为 ROOT.war

java - 未调用接缝页面操作

java - JSF 与数据库交互

java - Mifosx 安装失败

java - 尝试将 Oracle-ADF 应用程序部署到 Tomcat 7

java - 使用 AST 查找 Java 程序中的所有 boolean 表达式

c++ - 找不到...权限被拒绝 :( (Eclipse C++)

java - tomcat7 上的 servlet eclipse HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST