2013-08-03 8 views
6

मैं जेएसएफ में एक साधारण हैलो वर्ल्ड ऐप की कोशिश कर रहा हूं लेकिन शुरुआत में टॉमकैट द्वारा फेंक दिया गया अपवाद के आधार पर मुझे लगता है कि FacesServlet प्रारंभ नहीं हो रहा है। मेरे पास आवश्यक jar फ़ाइलें myfaces-api, bundle, impl और कॉमन्स बीनटिल, कोडेक, संग्रह, डायजेस्टर, लॉगिंग है। इसके अलावा मैंने एसओ पर एक अन्य प्रश्न में पढ़ा कि मुझे jsf-api.jar and jsf-impl.jar भी आवश्यक होगा जिसे मैंने WEB-INF/lib में भी रखा था और पथटॉमकैट 7 में FacesServlet प्रारंभ करने में असमर्थ - क्लास नॉटफाउंड एक्सेप्शन

अभी भी कोई भाग्य नहीं बनाया गया है। मैं Ubuntu पर विकासशील कर रहा हूँ, ग्रहण और बिलाव 7

का उपयोग कर यहाँ मेरी web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>Doom</display-name> 
    <display-name>JavaServerFaces</display-name> 

    <!-- Change to "Production" when you are ready to deploy --> 
    <context-param> 
     <param-name>javax.faces.PROJECT_STAGE</param-name> 
     <param-value>Development</param-value> 
    </context-param> 

    <!-- Welcome page --> 
    <welcome-file-list> 
     <welcome-file>faces/welcome.xhtml</welcome-file> 
    </welcome-file-list> 

    <!-- 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>/faces/*</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.faces</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 
</web-app> 

है यह अपवाद

java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4935) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5262) 
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5257) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:724) 
+0

'javax.faces-2.2.0.jar' जोड़ा जा रहा है (ठीक कर सकता है /javax.faces/2.2.0/) ** WEB-INF/lib ** ने मेरे लिए समस्या हल की। –

+0

कृपया ध्यान दें कि स्वीकार्य उत्तर टोमकैट पर जेएसएफ स्थापित करने का गलत तरीका है। सही तरीके से, हमारे जेएसएफ विकी पेज देखें: http://stackoverflow.com/tags/jsf/info – BalusC

उत्तर

15

2 हफ्तों के बाद मैं इस सवाल का जवाब मिल गया है। अंत में हमेशा के रूप में बहुत सरल है। आपको

jsf-api.jar 
jsf-impl.jar 

टोमकैट lib पर प्रतिलिपि बनाने की आवश्यकता है। project lib में यह काम नहीं कर रहा है।

+3

स्पष्ट रूप से आपकी ग्रहण कॉन्फ़िगरेशन गंभीर रूप से गड़बड़ हो गई है। मैं जावा ईई के लिए ग्रहण को पुनर्स्थापित करने का सुझाव देता हूं और इसकी किसी भी सेटिंग को तब तक नहीं बदलता जब तक आप वास्तव में वास्तव में समझ नहीं पाते कि कवर के तहत सेटिंग वास्तव में क्या कर रही है। ध्यान दें कि टॉमकैट के lib में उन libs को एक समाधान नहीं है, लेकिन एक कामकाज है। असली समाधान है कि उन libs को वेबएप के '/ WEB-INF/lib' में रखना है। वह हिस्सा काम नहीं करता है एक समस्या है जिसे आपको अभी भी हल करने की आवश्यकता है। – BalusC

+0

@ बाल्लूसी बुरी खबरों के लिए धन्यवाद, लेकिन समय के लिए यह मेरे लिए काम करता है मैं वास्तव में कुछ जेएसएफ सीखना चाहता था :) – DevZer0

+0

मुझे आशा है कि आप ध्यान रखें कि आपको इस समस्या और उसके भविष्य के सभी परिणामों को संबोधित नहीं करना चाहिए जेएसएफ, लेकिन खराब वातावरण के लिए। आपके साथ शुरू करने के लिए एक अच्छा विकास और रनटाइम पर्यावरण होना चाहिए। – BalusC

1

मुझे वही समस्या थी, जो एक्लिप्स जूनो और टॉमकैट 7 - टोमे 1.6.0 के साथ काम कर रही थी।

मैं mojarra 2.0.3 का उपयोग करना चाहता हूं और मुझे सर्वर परिनियोजन में कई समस्याएं मिली हैं। मैंने इसे myfaces - *। Jar को टॉमकैट lib में हटा दिया है; फिर Tomcat निर्देशिका में mojarra lib और फिर सर्वर शुरू कर। अब यह ठीक है, यह चल रहा है।

कई कॉन्फ़िगरेशन परिवर्तनों के बाद, मैंने देखा है कि वास्तव में यह काम करता है कि यह टॉककैट निर्देशिका में लाइब्रेरी स्थापित है, सीधे ग्रहण कॉन्फ़िगरेशन को अनदेखा कर रहा है। शायद एक बग?

अंत में मैंने अपनी समस्या को मैन्युअल रूप से टॉमकैट लाइब्रेरी को मैन्युअल रूप से बदल दिया है। मुझे नहीं लगता कि यह भविष्य में अब एक समस्या होगी।

0

यह निर्भरता पुस्तकालयों आवश्यक होते हैं और http://repo1.maven.org/maven2/org/glassfish से आपकी समस्या

'org.glassfish:javax.faces:2.3.0' 
संबंधित मुद्दे