सारांशग्रहण + 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 फ़ाइलों को डालने की प्रक्रिया को स्वचालित करने के लिए कैसे करें
परिनियोजन असेंबली में मेरे पास दो प्रविष्टियां हैं: ** (1) ** SOURCE =/src/main, डिप्लो पाथ = वेब-आईएनएफ/कक्षाएं ** (2) ** स्रोत =/वेबकंटेंट, डिप्लो पाथ =/ –
ऐड बटन पर क्लिक करें, जावा बिल्डपैथ प्रविष्टियों का चयन करें .. सभी का चयन करें और जोड़ें .. यह जगह ग्रहण है जो सभी निर्भरताओं को वेब-आईएनएफ/lib – vinodn
में जोड़ा जा सकता है "तैनाती असेंबली" में "मेवेन निर्भरता" जोड़ने के बाद सबकुछ काम करता है फिर। धन्यवाद! –