मैं ग्रहण में सर्वलेट्स के साथ विकास करना चाहता हूं, लेकिन यह कहता है कि पैकेज javax.servlet
को हल नहीं किया जा सकता है। मैं javax.servlet
अपनी ग्रहण परियोजना में पैकेज कैसे जोड़ सकता हूं ?
मैं ग्रहण में सर्वलेट्स के साथ विकास करना चाहता हूं, लेकिन यह कहता है कि पैकेज javax.servlet
को हल नहीं किया जा सकता है। मैं javax.servlet
अपनी ग्रहण परियोजना में पैकेज कैसे जोड़ सकता हूं ?
जवाबों:
सुनिश्चित करें कि आप कम से कम ग्रहण आईडीई एंटरप्राइज़ जावा डेवलपर्स ( एंटरप्राइज़ के साथ ) का उपयोग कर रहे हैं । इसमें डायनामिक वेब प्रोजेक्ट बनाने के लिए विकास टूल शामिल हैं और आसानी से सर्वलेटकनेक्टर्स को एकीकृत किया जाता है (वे उपकरण वेब टूल प्लेटफ़ॉर्म, डब्ल्यूटीपी का हिस्सा हैं)। यदि आपके पास जावा (एंटरप्राइज़) के बिना पहले से ही ग्रहण आईडीई था, और मैन्युअल रूप से कुछ संबंधित प्लगइन्स स्थापित किए गए हैं, तो संभावना है कि यह ठीक से नहीं किया गया था। आप इसे सबसे अच्छी तरह से कचरा कर सकते हैं और एंटरप्राइज जावा एक के लिए वास्तविक ग्रहण आईडीई हड़प लेंगे।
आप यह भी सुनिश्चित करने के लिए आप पहले से ही उदाहरण के लिए, एक servletcontainer अपने मशीन जो उत्पादन वातावरण में servletcontainer के रूप में लागू कम से कम एक ही सर्वलेट एपीआई संस्करण पर स्थापित किया है कि जरूरत अपाचे बिलाव , ओरेकल ग्लासफिश , JBoss के रूप में / WildFly आमतौर पर, आदि, बस ज़िप फ़ाइल डाउनलोड करना और उसे निकालना पर्याप्त है। टॉमकैट के मामले में, ईएक्सई प्रारूप डाउनलोड न करें , यह केवल विंडोज आधारित उत्पादन वातावरण के लिए है। यह भी देखें कि स्थानीयहोस्ट में टॉमकैट सर्वर द्वारा आवश्यक कई पोर्ट (8005, 8080, 8009) पहले से ही उपयोग में हैं ।
एक सर्वलेटेनर सर्वलेट एपीआई का एक ठोस कार्यान्वयन है। ध्यान दें कि जावा ईई एसडीके ओरेकल डॉट कॉम पर डाउनलोड होता है जिसमें मूल रूप से ग्लासफिश होता है। तो अगर आप पहले से ही जावा ईई एसडीके डाउनलोड कर चुके हैं, तो आपके पास पहले से ग्लासफिश है। यह भी ध्यान दें कि उदाहरण के लिए GlassFish और JBoss AS / WildFly सिर्फ सर्वलेटकॉनर से अधिक हैं , वे JSF, EJB, JPA और अन्य सभी Java EE फैन्सीनेस का भी समर्थन करते हैं। यह भी देखें कि वास्तव में जावा ईई क्या है?
एक बार एंटरप्राइज जावा और अपनी मशीन पर एक सर्वलेटक दोनों के लिए ग्रहण स्थापित करने के बाद, ग्रहण में निम्नलिखित चरण करें:
ग्रहण में सर्वलेटेकर को एकीकृत करें
ए। वाया सर्वर दृश्य
उपयुक्त सर्वलेटकनेक्टर चुनें और संस्करण बनाएं और विज़ार्ड के माध्यम से चलें।
ख। या, ग्रहण वरीयताओं के माध्यम से
प्रोजेक्ट के साथ सहयोगी सर्वर
ए। नए प्रोजेक्ट में
विज़ार्ड में, एकीकृत सर्वर पर लक्ष्य रनटाइम सेट करें।
ख। या, मौजूदा परियोजना में
किसी भी तरह से, ग्रहण तब निर्माण पथ में सर्वलेटकॉन के पुस्तकालयों को स्वचालित रूप से ले जाएगा। इस तरह आप सर्वलेट एपीआई का आयात और उपयोग कर पाएंगे।
आपको किसी भी मामले में प्रोजेक्ट की बिल्ड पाथ प्रॉपर्टी के आसपास फिडेल करने की आवश्यकता नहीं होनी चाहिए । आप उपरोक्त सभी चाहिए कभी नहीं मैन्युअल रूप से कॉपी / डाउनलोड / स्थानांतरित / व्यक्ति servletcontainer विशेष पुस्तकालयों की तरह शामिल हैं servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
, javaee.jar
, आदि यह केवल भविष्य पोर्टेबिलिटी, संगतता, classpath और रख-रखाव मुसीबतों का कारण बन, अपने webapp काम नहीं होता है जब यह है, क्योंकि एक अलग मेक / संस्करण के सर्वलेटकॉर्नर पर तैनात किया जाता है, जहां से उन पुस्तकालयों को मूल रूप से प्राप्त किया जाता है।
यदि आप मावेन का उपयोग कर रहे हैं, तो आपको यह पूरी तरह सुनिश्चित करने की आवश्यकता है कि सर्वलेटेनर-विशिष्ट लाइब्रेरी जो पहले से ही लक्ष्य रनटाइम द्वारा प्रदान की जाती हैं, के रूप में चिह्नित हैं <scope>provided</scope>
।
यहां कुछ सामान्य अपवाद है जो आप जब तुम कूड़े प्राप्त कर सकते हैं /WEB-INF/lib
या यहां तक कि /JRE/lib
, /JRE/lib/ext
, आदि एक लापरवाह संकलन त्रुटियों को ठीक करने की कोशिश में servletcontainer विशेष पुस्तकालयों के साथ:
<property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/>
maven-archetype-webapp
हैं जो सर्वलेट-एपी जार को एक निर्भरता के रूप में शामिल नहीं करते हैं? प्रोजेक्ट में संकलित त्रुटि के साथ एक index.jsp है। (एक्लिप्स लूना बिल्ड आईडी: 20140612-0600, JDK 8, M2eclipse)
servlet-api
निर्भरता को टॉम्बैट, वाइल्डफ्लाय, ग्लासफिश आदि जैसे सर्वलेट रनटाइम वातावरण द्वारा प्रदान किया जाता है। इसे कभी भी अपने ऐप के हिस्से के रूप में शामिल न करें, क्योंकि इसकी पर्यावरण के साथ टकराव की अच्छी संभावना है।
अपनी परियोजना के गुणों पर जाएं (के साथ)Alt + Enterया righ- क्लिक के साथ)
टार्गेट रनटाइम के तहत Apache Tomcat v7.0 पर जाँच करें और यह काम करता है।
The import javax.servlet cannot be resolved
।
हरि से थोड़ा अंतर:
प्रोजेक्ट पर राइट क्लिक करें ---> गुण ---> जावा बिल्ड पाथ ---> Add Library ... ---> सर्वर रनटाइम ---> Apache Tomcat ---- - समाप्त करें।
अपने सर्वर लिब फोल्डर से सर्वलेट-एपी.जर शामिल करें।
यह कदम करो
Pom.xml में javax.servlet निर्भरता जोड़ें। आपकी समस्या का समाधान किया जाएगा।
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
क्विक फिक्स- यह एक्लिप्स में काम करता है - प्रोजेक्ट पर राइट क्लिक -> गुण -> जावा बिल्ड पाथ (टैब) -> एक्सटर्नल JARs जोड़ें -> सर्वलेट एपी जार कार्यान्वयन (यदि टॉमकैट - इसका नाम सर्वलेट-एपीजे।) -> खोजें ओके पर क्लिक करें। बस !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
आर, j2ee.jar
, javaee.jar
, आदि यह केवल भविष्य पोर्टेबिलिटी, संगतता, classpath और रख-रखाव परेशानियों के लिए नेतृत्व करेंगे।
आप बस servlet-api.jar
उस जार फ़ाइलों को कॉपी कर सकते हैं जो कि lib फ़ोल्डर में है, जो WEB-INF में है। फिर बस अपनी परियोजना को साफ और निर्मित करें, आपकी त्रुटियां हल हो जाएंगी।
**OR**
आप सीधे निम्नलिखित चरणों का उपयोग करके लाइब्रेरी में जार फ़ाइलों को जोड़ सकते हैं।
servlet-api.jar
फ़ाइल ।servlet-api.jar
, jsp-api.jar
, javaee.jar
, आदि यह केवल भविष्य पोर्टेबिलिटी, संगतता, classpath और रख-रखाव परेशानियों के लिए नेतृत्व करेंगे।
मुझे पता है यह एक पुरानी पोस्ट है। हालाँकि, मैंने एक और उदाहरण देखा जहां परियोजना में पहले से ही टॉमकैट जोड़ा गया है लेकिन हमें अभी भी यह त्रुटि मिलती है। क्या यह हल करने के लिए किया गया था:
Alt + Enter
प्रोजेक्ट पहलू
दाईं ओर, विवरण के बगल में, एक और टैब "Runtimes" है। स्थापित टॉमकैट सर्वर को वहां सूचीबद्ध किया जाएगा। इसे सेलेक्ट करें।
विन्यास और पूरा बचाओ!
आशा है कि यह किसी की मदद करता है।
से विकिपीडिया ।
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
"Transitional//EN\">\n" +
"<html>\n" +
"<head><title>Hello WWW</title></head>\n" +
"<body>\n" +
"<h1>Hello WWW</h1>\n" +
"</body></html>");
}
}
यह, निश्चित रूप से, केवल तभी काम करता है जब आपने servlet-api.jar
ग्रहण बिल्ड पथ में जोड़ा हो । आमतौर पर आपके एप्लिकेशन सर्वर (जैसे टॉमकैट ) में सही जार फ़ाइल होगी।
मावेन परियोजनाओं के लिए निम्न निर्भरता जोड़ें:
<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
एकल परियोजनाओं के लिए:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
या javax.servlet.jar
अपने प्रोजेक्ट में डाउनलोड और जोड़ें।
मुझे "डायनेमिक वेब मॉड्यूल" से संबंधित प्रोजेक्ट निर्माण के दौरान एक शून्य सूचक अपवाद मिल रहा था।
परियोजना को संकलित करने के लिए (अर्थात, javax.servlet
सफलतापूर्वक आयात करने के लिए) मुझे परियोजना के गुणों पर जाना होगा , साइडबार में प्रोजेक्ट पहलुओं को चुनना होगा , डायनामिक वेब मॉड्यूल पर टिक करना होगा और आवेदन करना होगा। ।
हैरानी की बात यह है कि इस बार "डायनेमिक वेब मॉड्यूल" पहलू ने सही तरीके से स्थापित किया, और आयात ने काम करना शुरू कर दिया।
हम में से कई ग्रहण में मावेन परियोजना के माध्यम से विकसित होते हैं। यदि हां, तो आप मावेन में टॉमकट निर्भरताओं को जार tomcat-servlet-api
और tomcat-jsp-api
जार के माध्यम से शामिल कर सकते हैं । टॉमकैट के प्रत्येक संस्करण के लिए एक मौजूद है। आमतौर पर इन्हें स्कोप के साथ जोड़ा जाता हैprovided
अपने POM के पर्याप्त होता है। यह आपके बिल्ड को अधिक पोर्टेबल रखेगा।
यदि आप भविष्य में टॉमकैट को अपग्रेड करते हैं, तो आप बस इन जार के संस्करण को भी अपडेट करते हैं।
आपको उपरोक्त सभी को कभी भी मैन्युअल रूप से कॉपी / डाउनलोड / स्थानांतरित नहीं करना चाहिए / इसमें सर्वलेट-एपीआई जैसे व्यक्तिगत सर्वलेटकॉन्सर-विशिष्ट लाइब्रेरी शामिल हैं।
@BalusC,
मैं उन सटीक कक्षाओं का उपयोग करना पसंद करूंगा, जो मेरा आवेदन एक्लिप्स (जब मैं एक पागल डेवलपर की तरह महसूस कर रहा हूं) द्वारा प्रदान किए गए एक के बजाय उपयोग करने जा रहा हूं।
एक अन्य उपाय यह होगा कि ग्रहण "कॉन्फ़िगर पथ का निर्माण करें"> पुस्तकालय> बाहरी जार जोड़ें, और जो भी कंटेनर उपयोग करने के लिए चुनता है उसका सर्वलेट एप जोड़ें।
और निर्माण के लिए चींटी का उपयोग करते समय @kaustav datta के समाधान का पालन करें - एक संपत्ति जैसे कि tomcat.home या weblogic.home। हालाँकि यह एक और अड़चन पेश करता है कि अगर डेवलपर वेबलॉग का उपयोग कर रहा है, तो उसे अपनी स्थानीय मशीन पर वेबलॉग स्थापित करना चाहिए! कोई अन्य क्लीनर समाधान?
यह भी कारण हो सकता है। मैं निम्नलिखित के साथ आया हूं pom.xml
।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
अनसुलझे मुद्दे के बहिष्कार के कारण था spring-boot-starter-tomcat
। बस <exclusions>...</exclusions>
निर्भरता को हटा दें यह समस्या को सुलझा देगा, लेकिन सुनिश्चित करें कि ऐसा करने से एम्बेडेड टोमैट सर्वर को भी बाहर रखा जाएगा।
यदि आपको एम्बेडेड टॉमकैट सर्वर की आवश्यकता है, तो आप उसी निर्भरता को जोड़ सकते हैं compile scope
।
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>