Проект JSF в Eclipse с Maven предоставляет ClassNotFoundException для FacesServlet

Я создал проект Maven в Eclipse. В меню "Фасеты проекта" я выбрал Динамический веб-модуль, Java и Java Server Faces. Добавлены некоторые зависимости из pom.xml, такие как jsf-api и servlet-api. Затем я написал простой Java-бин и страницу HTML, в которой используется бин.

Когда я создаю файл war с помощью "maven clean install" и вручную внедряю его в 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)

Кажется, что библиотеки jsf не связаны должным образом при запуске из Eclipse. У вас есть представление о причине такого поведения?

1 ответ

Решение

В "Свойствах проекта" -> "Сборка развертывания" добавление "Записи пути сборки Java -> Зависимости Maven" решает проблему!

Другие вопросы по тегам