2012-03-02 22 views
20

मैं एक्लिप्स इंडिगो और टॉमकैट सर्वर का उपयोग कर एक मूल हैलो वर्ल्ड प्रोजेक्ट स्थापित करने की कोशिश कर रहा हूं। मैंने एक सरल सर्वलेट के साथ एक गतिशील परियोजना बनाई। सर्वलेट का परीक्षण किया और यह ठीक काम किया। तब मैंने मैवेन सपोर्ट को सक्षम किया और मेरे पोम में लॉगबैक जोड़ा। मैंने servlet की doGet विधि में एक लॉगिंग कथन रखा है। सर्वलेट चलाते समय, यह शिकायत करता है कि इसे कोई बाइंडिंग नहीं मिल रही है क्योंकि लॉगबैक जार ग्रहण टॉमकैट उदाहरण में कॉपी नहीं किए जा रहे हैं।ग्रहण डब्ल्यूटीपी मेवेन निर्भरताओं को प्रकाशित नहीं कर रहा है

${workspace}\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\

मैं कैसे ग्रहण डब्ल्यूटीपी/Maven ठीक से साथ काम करने के मिलता है: मैं जार यहाँ में कहीं प्रकाशित खोजने के लिए उम्मीद? मैंने बिना किसी अंतर के m2e-wtp कनेक्टर को स्थापित करने का भी प्रयास किया।

उत्तर

48

चेक तैनाती विधानसभा (संदर्भ परियोजना पर मेनू), वहाँ मानचित्रण Maven निर्भरता होना चाहिए -> वेब-INF/lib

+0

टिप के लिए धन्यवाद, यह सही ढंग से कॉन्फ़िगर किया गया था लेकिन काम नहीं कर रहा। आखिरकार मुझे पता चला कि स्क्रैच से एक नई परियोजना तैयार की गई। इस मामले में मैंने प्रोजेक्ट बनाया था और फिर मेवेन डब्ल्यूटीपी कनेक्टर जोड़ा और इसने परियोजना को सही तरीके से कॉन्फ़िगर नहीं किया। – dcompiled

+2

मेरे पास एक अलग समस्या थी, लेकिन यह इसे ठीक कर दिया। मैं अपनी परियोजना बनाने के लिए मेवेन का उपयोग कर रहा था जिसमें इसमें स्नैपशॉट था। मैं मूल रूप से वर्कस्पेस संकल्प सक्षम था और इसे बंद कर दिया। ग्रहण को अभी भी स्थानीय प्रोजेक्ट का उपयोग करने के लिए कॉन्फ़िगर किया गया था, न कि हमारे नेक्सस रेपो से स्नैपशॉट्स। मैं सीएनएफई प्राप्त कर रहा था और यह पाया जिसने मुझे इसकी समस्या के बारे में बताया, इसे अभी भी हल करने की कोशिश की और इसे प्रकाशित नहीं किया। – bh5k

+0

इससे मुझे बहुत मदद मिली और दूसरे मामले में :) (इसी तरह) – Alex

13

एएसपी.नेट पृष्ठभूमि से आ रहा है, मुझे यह चौंकाने वाला लगता है कि वेबप्ल ग्रहण डब्ल्यूटीपी और मेवेन के साथ चलने के लिए कितना काम करता है, खासकर यदि आप स्वयं सीख रहे हैं। उम्मीद है कि यह त्वरित प्रारंभ मार्गदर्शिका किसी और को जल्दी से तेज़ी से उठने में मदद करेगी।

मैवेन के साथ एक्लिप्स डब्ल्यूटीपी में काम कर रहे हैलो वर्ल्ड प्रोजेक्ट को पाने के दो तरीके हैं। आप एक गतिशील वेब प्रोजेक्ट बना सकते हैं और फिर मेवेन प्रकृति जोड़ सकते हैं या आप विपरीत कर सकते हैं।

अद्यतन साइटों के साथ

स्टार्टअप विन्यास

  • स्थापित से http://tomcat.apache.org/download-70.cgi

  • विंडो बिलाव 7 की प्रतिलिपि -> वरीयताएँ -> सर्वर -> रनटाइम वातावरण

  • अपाचे जोड़ें ई बिलाव 7.0 और चयन स्थानीय स्थापना निर्देशिका

विकल्प 1: गतिशील वेब परियोजना तो Maven प्रकृति जोड़ने

  • नई Maven परियोजना का चयन करें मूलरूप आदर्श org.apache.maven.archetypes बनाएँ : मेवेन-आर्केटाइप-वेबएप

  • जावा ईई परिप्रेक्ष्य में बदलें।

  • नया स्रोत फ़ोल्डर, src \ main \ java बनाएं। ध्यान दें कि ग्रहण आपके लिए ऐसा करने के लिए पर्याप्त स्मार्ट नहीं है और फ़ोल्डरों का क्रम भी गलत है। src \ main \ java फ़ोल्डर src \ main \ संसाधन के बाद सूचीबद्ध है। इसे परियोजना गुणों में मैन्युअल रूप से ठीक किया जा सकता है।

  • एक नया सर्वलेट बनाएं। ध्यान दें कि ग्रहण इस फ़ाइल को गलत फ़ोल्डर src \ main \ संसाधन में डिफ़ॉल्ट रूप से डिफ़ॉल्ट करता है क्योंकि ऑर्डर गलत है। इसके बजाय, मैन्युअल रूप से src \ main \ java चुनें। परीक्षण को आसान बनाने के लिए विज़ार्ड के दूसरे पृष्ठ पर URL मैपिंग को/* में बदलें।

  • अब हमारा सर्वलेट तैयार है लेकिन सर्वलेट एपीआई पर निर्भरताएं अनबाउंड हैं। ए) हम सर्लेट एपीआई को हमारी परियोजना या बी पर निर्भरता के रूप में जोड़ सकते हैं) हम अपाचे 7.0 के लिए ग्रहण सर्वर कॉन्फ़िगरेशन से जुड़ सकते हैं।

:

  • विकल्प एक के लिए, पोम को यह निर्भरता जोड़ें।

    <dependency> 
        <groupId>org.apache.tomcat</groupId> 
        <artifactId>tomcat-api</artifactId> 
        <version>7.0.${set this}</version> 
        <scope>provided</scope> 
    </dependency> 
    
    • विकल्प बी के लिए:

      • प्रोजेक्ट के गुण -> जावा पथ बिल्ड -> पुस्तकालय -> लाइब्रेरी जोड़ें -> सर्वर रनटाइम -> अपाचे बिलाव 7.0
      • राइट क्लिक करें और रन सर्वर पर:
    • आंतरिक ब्राउज़र में http://localhost:8080/ $ {a जैसे एक खाली पृष्ठ आना चाहिए rtifact} निर्भरता के

    टेस्ट प्रकाशित करने: पोम को

    • जोड़ें Joda समय।

    • doGet विधि के लिए पूर्व में बनाया गया सर्वलेट में इस लाइन जोड़ें और आयात आवश्यक निर्भरता:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
        response.getWriter().println("The time is now: " + new DateTime().toString()); 
    } 
    

    परीक्षण पृष्ठ को पुनः लोड करें और आउटपुट अब होना चाहिए:

    समय है: 2012-03-03T14: 14: 29.890-05: 00

    अब अगर आप सर्वलेट 3.0 और एनोटेशन के साथ खेलना चाहते हैं जो डिफ़ॉल्ट रूप से सक्षम नहीं है, जिसके कारण मुझे नहीं पता। फर्स्ट फोर्स मेवेन को अपने पॉम में जोड़कर जावा 1.6 का उपयोग करने के लिए, अन्यथा जब भी आप अपना पोम अपडेट करते हैं तो कॉन्फ़िगरेशन जावा 1.5 पर वापस आ जाएगा।

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>2.3.2</version> 
        <configuration> 
         <source>1.6</source> 
         <target>1.6</target> 
        </configuration> 
        </plugin> 
    

    ओपन प्रोजेक्ट प्रॉपर्टीज -> प्रोजेक्ट फैक्ट्स। संस्करण को "डायनेमिक वेब मॉड्यूल" के तहत 3.0 में बदलें, जावा संस्करण 1.6

    कक्षा \ en \ "के नाम पर एनोटेटेड सर्वलेट नाम के साथ एक नया सर्वलेट बनाएं और ध्यान दें कि @WebServlet एनोटेशन स्वचालित रूप से कैसे बनाया गया है।

    विकल्प 2:

    • चयन बिलाव रनटाइम और गतिशील मॉड्यूल संस्करण 3.0
    • स्रोत फ़ोल्डर src \ मुख्य \ जावा
    • डिफ़ॉल्ट सेट उत्पादन लक्ष्य बनाएँ गतिशील वेब परियोजना तो Maven प्रकृति जोड़ने \ कक्षाएं
    • संदर्भ निर्देशिका सेट करें src \ main \ webapp
    • वेब उत्पन्न करें। xml
    • त्वरित परीक्षण
    • के लिए मानचित्रण/* के साथ सर्वलेट बनाएं doGet विधि के लिए एक निर्गम बयान जोड़े

    response.getWriter().println("Another test");

    • डबल "तैनाती डिस्क्रिप्टर" पर क्लिक करें और जड़ को यह विशेषता जोड़ें वेब-ऐप तत्व metadata-complete="false"

    • राइट क्लिक प्रोजेक्ट और रन के रूप में चुनें -> सर्वर पर चलाएं

    :

  • राइट क्लिक करें परियोजना - -> कॉन्फ़िगर> जावा 1.6 का उपयोग करें और Joda समय निर्भरता को जोड़ने के लिए युद्ध
  • संपादित पोम और संकलक सेट के रूप में
  • पैकेजिंग का चयन Maven परियोजना में बदलें।

    <dependencies> 
        <dependency> 
         <groupId>joda-time</groupId> 
         <artifactId>joda-time</artifactId> 
         <version>2.1</version> 
        </dependency> 
    </dependencies> 
    
    <build> 
        <plugins> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-compiler-plugin</artifactId> 
          <version>2.3.2</version> 
          <configuration> 
           <source>1.6</source> 
           <target>1.6</target> 
          </configuration> 
         </plugin> 
        </plugins> 
    </build> 
    
  • +1

    ग्रहण के हाल के संस्करणों के साथ इन दिनों कुछ हद तक बेहतर लग रहा है (मेरी प्रक्रिया: नया मैवेन प्रोजेक्ट बनाएं, वेब का चयन करें ऐप आर्केटाइप, स्वीकार्य उत्तर में वर्णित अनुसार तैनाती असेंबली में मेवेन निर्भरता जोड़ें, जो आम तौर पर काम करता है), लेकिन तथ्य यह है कि यह प्रश्न अभी भी प्रासंगिक है कि यह अभी भी * सही * नहीं है। लेकिन न तो वेब एप्लिकेशन सिस्टम मौजूद है और न ही मैवेन वास्तव में आईडीई के उपयोग के साथ डिजाइन किए गए थे, शायद यही कारण है कि हमारे पास इस तरह के मुद्दे हैं। जबकि .NET में सबकुछ अच्छी तरह से वीएस के साथ एकीकृत करने के लिए डिज़ाइन किया गया था। –

    0

    मैं एक ऐसी ही समस्या का सामना करना पड़ा और हालांकि मैं तैनाती विधानसभा कॉन्फ़िगर किया था सही ढंग से यह अभी भी काम नहीं किया। तब मैंने पाया कि खिड़की के नीचे -> प्राथमिकताएं -> मेरा ग्रहण -> जावा एंटरप्राइज़ प्रोजेक्ट -> वेब प्रोजेक्ट, परिनियोजन टैब के तहत, निर्भर परियोजनाओं का प्रबंधन बंद कर दिया गया था। मैंने इसे निर्भर परियोजनाओं के जार को lib फ़ोल्डर में तैनात करने के लिए बदल दिया और फिर सबकुछ एक आकर्षण की तरह काम करता था। मैं तैनाती असेंबली विकल्प भी बंद कर सकता था।

    1

    अधिकार तो Maven चुनें परियोजना Explorer में वेब परियोजना पर क्लिक करें -> अद्यतन परियोजना

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