2013-06-18 109 views
5

我正在開發一個使用JSF 1.2和PrimeFaces 3.5的示例應用程序。我在桌面上安裝了RAD,並創建了一個新的動態Web項目。我已經用primeface編輯器標籤編寫了xhtml文件。但是,當我運行該項目時,它會爲FacesServlet拋出「java.lang.ClassNotFoundException」,儘管servlet存在於類路徑中。Faces Servlet - ClassNotFound異常

我的web.xml文件看起來像這樣

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
    <display-name> 
    PrimeFacesNew</display-name> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 
    <!-- JSF mapping --> 
    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <!-- Map these files with JSF --> 
    <servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>HelloWorld.xhtml</welcome-file> 
    </welcome-file-list> 
</web-app> 

和我HelloWorld.xhtml看起來像這樣

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:p="http://primefaces.org/ui"> 
<h:head> 
</h:head> 
<h:body> 
    <h1>Hello World PrimeFaces</h1> 

    <h:form> 
     <p:editor value="This is PrimeFace editor" /> 
    </h:form> 

</h:body> 
</html> 

我已經在我的classpath中添加以下jar文件..

myfaces- api-2.1.12.jar
myfaces-impl-2.1.12.jar
myfaces-bundle-2.1.12.jar
SLF4J-API-1.7.5.jar
SLF4J-簡單1.7.5.jar
primefaces-3.5.jar

,當我跑了使用RAD的Tomcat 6.0,它是引發異常下面..

SEVERE: Error loading WebappClassLoader 
    delegate: false 
    repositories: 
    /WEB-INF/classes/ 
----------> Parent Classloader: 
[email protected] 
javax.faces.webapp.FacesServlet 
Throwable occurred: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1083) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:599) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 
Jun 18, 2013 1:15:10 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet /primefaces threw load() exception 
Throwable occurred: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1083) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4045) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4351) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:516) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:566) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) 
    at java.lang.reflect.Method.invoke(Method.java:599) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 

素面元件也顯示爲RAD中的問號。我在谷歌嘗試了所有可能的解決方案,但它並沒有爲我工作。請糾正我在哪裏做錯了..

謝謝。

+0

PrimeFaces 3.5無法在JSF 1.2下運行,您需要JSF 2.X. –

+1

哦,我不知道這一點。讓我嘗試添加2.0罐並嘗試。 – samuelebe

+0

Alex:我使用myfaces-2.1.2.jar,FacesServlet來自該jar。所以,我想我正在使用JSF 2.1 jar。 – samuelebe

回答

0

由於您使用的是JSF 1.2,因此您需要使用jsf-impl.jar和jsf-api.jar。其他人也有這個問題閱讀this其中談到不兼容性,你指定相同的錯誤已在這裏描述。希望這可以幫助你解決這個ClassNotFound錯誤。

+1

請問你提供一個評論爲什麼你標記我,所以我可以根據您的反饋更新我的答案? (提前致謝) –

0

如果你得到classnotfoundExecption錯誤對於servlet總是檢查你是否在012中添加了所需的
庫文件夾...

罐加入到構建路徑不可用於服務器組件....

你必須明確的罐子加起來也只有WEB-INF/lib文件夾...

5

這個問題發生在我因爲我沒有在項目屬性中提供Deployement選項中的路徑:

右鍵單擊項目--->選擇「properties」 - > Deployement assembly - >「ADD」選項 - >選擇「java build路徑條目「 - >選擇路徑