2012-04-02 12 views
5

सारांशग्रहण + Maven + जावा सर्वर चेहरे -> ClassNotFoundException: StartupServletContextListener

जब मैं एक JSF 2.0 मैं निम्नलिखित अपवाद (बिलाव 7.0 पर) ग्रहण के भीतर से आवेदन चलाने का प्रयास:

Problem: SEVERE: Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener 
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener 

विवरण

मैं ग्रहण का उपयोग कर जेएसएफ अनुप्रयोगों को विकसित करना सीख रहा हूं। मैंने एक पूर्व-कॉन्फ़िगर किए गए ग्रहण प्रोजेक्ट के साथ शुरुआत की: फ़ाइल-> नई-> गतिशील वेब प्रोजेक्ट-> जावासेवर फेस v2.0 प्रोजेक्ट। इस विधि का उपयोग ग्रहण सभी निर्भरताओं को प्रदान करता है। लेकिन मैं वास्तव में सीखना चाहता हूं कि सब कुछ कैसे काम करता है। मैं "जादू" को हटाना चाहता हूं, इसलिए मैंने अपनी परियोजना को एक मेवेन प्रोजेक्ट में परिवर्तित कर दिया: कॉन्फ़िगर करें-> मेवेन प्रोजेक्ट में कनवर्ट करें।

मैं तो मेरे pom.xml (http://myfaces.apache.org/build-tools/archetypes/myfaces-archetype-helloworld20/index.html के आधार पर) बनाया है, यह निम्नलिखित शामिल हैं:

<build> 
    <finalName>jsf-facelets-tutorial</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <webXml>WebContent/WEB-INF/web.xml</webXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>el-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.0</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-api</artifactId> 
     <version>2.0.5</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.myfaces.core</groupId> 
     <artifactId>myfaces-impl</artifactId> 
     <version>2.0.5</version> 
     <scope>runtime</scope> 
    </dependency> 
</dependencies> 

लेकिन क्योंकि मैं JSF के साथ अपरिचित हूँ, और क्योंकि यह एक ग्रहण "गतिशील वेब परियोजना" है, परियोजना संरचना मेरे लिए नई है और मुझे यह समझने में परेशानी हो रही है कि मैवेन से कौन सी निर्भरताएं आ रही हैं और जो ग्रहण "जादू" द्वारा प्रदान की जाती हैं।

ग्रहण में, मेरा परियोजना संरचना इस प्रकार है:

ProjectName 
    JAX-WS Web Services <-- CAN I REMOVE THIS??? 
    Deployment Descriptor 
    Java Resources 
    src/main 
    Libraries 
     Apache Tomcat v7.0 
     el-api.jar 
     jsp-api.jar 
     [more...] 
     JSF 2.0 (Apache MyFaces JSF Core-2.0 API 2.0.2) <-- I REMOVED THIS!!! 
     EAR Libraries 
     JRE System Library 
     Maven Dependencies 
     el-api-1.0.jar 
     myfaces-api-2.0.5.jar 
     myfaces-impl-2.0.5.jar 
     [more...] 
     Web App Libraries 

समस्या मेरे (बहुत बुनियादी) आवेदन (प्रवेश पृष्ठ & स्वागत पृष्ठ) अब चलाता है। जब मैं निम्न कार्य करें:

(1) Right click on WebContent/login.xhtml 
(2) Run as -> Run on Server 
(3) Apache Tomcat v7.0 - JDK6 at localhost 

मैं अपवाद:

Problem: SEVERE: Error configuring application listener of class org.apache.myfaces.webapp.StartupServletContextListener 
java.lang.ClassNotFoundException: org.apache.myfaces.webapp.StartupServletContextListener 

मैं लग रहा है कि इसे ठीक करना बहुत आसान है है, लेकिन मैं भी अपरिचित इन चौखटे के साथ काम करने के लिए कर रहा हूँ बाहर।

यदि कोई अतिरिक्त विवरण है तो मुझे प्रदान करना चाहिए (web.xml, face-config-xml, login.xhtml), मुझे बताएं और मैं उन्हें जोड़ दूंगा।

धन्यवाद!

संपादित

वेब-INF/lib हमेशा खाली है। मेरी समझ से, सभी निर्भरताओं को इस फ़ोल्डर में कॉपी करना आवश्यक है, जिसे रनटाइम पर आवश्यक होगा, और यह वेब कंटेनर द्वारा प्रदान नहीं किया जाता है। मेरे खाली होने के कारण हैं: (1) मुझे नहीं पता कि मुझे वहां क्या चाहिए (2) मुझे नहीं पता कि वहां .jar फ़ाइलों को डालने की प्रक्रिया को स्वचालित करने के लिए कैसे करें

उत्तर

7

अपने ग्रहण प्रोजेक्ट गुण के तहत, नेविगेशन से तैनाती विधानसभा का चयन मेनू जो "इस जावा ईई वेब अनुप्रयोग प्रोजेक्ट के लिए पैकेजिंग संरचना" को परिभाषित करता है। सुनिश्चित करें कि आपके पास यहां शामिल सभी परियोजना निर्भरताएं हैं ..

या वर्कस्पेस/.metadata/.plugins/org.eclipse.wst.server.core \ tmp0 के अंतर्गत वेब सर्वर निर्देशिका में देखें ताकि यह जांच सके कि जार को कैटलिना बेस पर कॉपी किया गया है या नहीं।

+0

परिनियोजन असेंबली में मेरे पास दो प्रविष्टियां हैं: ** (1) ** SOURCE =/src/main, डिप्लो पाथ = वेब-आईएनएफ/कक्षाएं ** (2) ** स्रोत =/वेबकंटेंट, डिप्लो पाथ =/ –

+2

ऐड बटन पर क्लिक करें, जावा बिल्डपैथ प्रविष्टियों का चयन करें .. सभी का चयन करें और जोड़ें .. यह जगह ग्रहण है जो सभी निर्भरताओं को वेब-आईएनएफ/lib – vinodn

+0

में जोड़ा जा सकता है "तैनाती असेंबली" में "मेवेन निर्भरता" जोड़ने के बाद सबकुछ काम करता है फिर। धन्यवाद! –

1

लगता है जैसे आप नहीं करते अपने लक्ष्य फ़ोल्डर में सभी जार बिल्ला

ग्रहण में एक Maven पैकेज चलाने की कोशिश करें को तैनात करने के लिए तैयार है सही परियोजना, Maven पैकेज के रूप में चलाने पर क्लिक करें

संबंधित मुद्दे