আমি ইক্লিপসে সার্ভলেটগুলি নিয়ে বিকাশ করতে চাই, তবে এটি বলে যে প্যাকেজটি javax.servlet
সমাধান করা যায় না। আমি কীভাবে javax.servlet
আমার গ্রহণ প্রকল্পে প্যাকেজ যুক্ত করতে পারি?
আমি ইক্লিপসে সার্ভলেটগুলি নিয়ে বিকাশ করতে চাই, তবে এটি বলে যে প্যাকেজটি javax.servlet
সমাধান করা যায় না। আমি কীভাবে javax.servlet
আমার গ্রহণ প্রকল্পে প্যাকেজ যুক্ত করতে পারি?
উত্তর:
নিশ্চিত হয়ে নিন যে আপনি এন্টারপ্রাইজ জাভা বিকাশকারীদের জন্য ( এন্টারপ্রাইজ সহ ) কমপক্ষে এক্লিপস আইডিই ব্যবহার করছেন । এটিতে গতিশীল ওয়েব প্রকল্পগুলি তৈরি করতে এবং সহজে সার্ভলেটকন্টাইনারগুলিকে সংহত করার জন্য বিকাশ সরঞ্জাম রয়েছে (সেই সরঞ্জামগুলি ওয়েব সরঞ্জাম প্ল্যাটফর্মের অংশ, ডাব্লুটিপি)। আপনার যদি ইতিমধ্যে জাভা (এন্টারপ্রাইজ ছাড়াই) এর জন্য Elpipse IDE রয়েছে এবং ম্যানুয়ালি কিছু সম্পর্কিত প্লাগইন ইনস্টল করেছেন, তবে সম্ভাবনা রয়েছে যে এটি সঠিকভাবে করা হয়নি। আপনি এটি সেরা ট্র্যাশ করতে চাইবেন এবং এন্টারপ্রাইজ জাভা একের জন্য সত্যিকারের গ্রহন আইডিটি ধরবেন।
এছাড়াও আপনি নিশ্চিত করার যদি আপনার আগে থেকেই উদাহরণস্বরূপ, একটি servletcontainer আপনার মেশিনে যা উৎপাদন পরিবেশে servletcontainer যেমন কার্যকরী অন্তত একই সার্ভলেট API সংস্করণ ইনস্টল করা আছে যে প্রয়োজন Apache, হুল বিড়াল , ওরাকল গ্লাসফিস , JBoss আঃ / WildFly সাধারণত, ইত্যাদি, শুধু জিপ ফাইলটি ডাউনলোড করা এবং এটি নিষ্কাশন করা যথেষ্ট। টমক্যাটের ক্ষেত্রে, EXE ফর্ম্যাটটি ডাউনলোড করবেন না , এটি কেবল উইন্ডোজ ভিত্তিক উত্পাদন পরিবেশের জন্য। আরও দেখুন Ao বেশ কিছু পোর্ট (8005, 8080, 8009) স্থানীয় হোস্ট এ হুল বিড়াল সার্ভারের জন্য প্রয়োজনীয় ইতিমধ্যে ব্যবহার করা হচ্ছে ।
সার্ভলেটকন্টেনার হ'ল সার্ভলেট এপিআই-র একটি কংক্রিট বাস্তবায়ন। নোট করুন যে Oracle.com এ জাভা ইই এসডিকে ডাউনলোডে মূলত গ্লাস ফিশ রয়েছে। সুতরাং আপনি যদি ইতিমধ্যে জাভা ইই এসডিকে ডাউনলোড করে ফেলেছেন তবে আপনার কাছে ইতিমধ্যে গ্লাস ফিশ রয়েছে। এছাড়াও মনে রাখবেন উদাহরণস্বরূপ গ্লাসফিস এবং JBoss আঃ / WildFly আছে আরো একটা servletcontainer চেয়ে, তারা JSF, EJB, JPA এবং অন্যান্য জাভা EE fanciness সমর্থন করে। এও আরও দেখুন জাভা ইই ঠিক কী?
আপনার মেশিনে এন্টারপ্রাইজ জাভা এবং একটি সার্লেটকন্টেইনার উভয়ই একবার ইনস্টল করার পরে, নিচের পদক্ষেপটি গ্রহণের জন্য করুন:
ইক্লিপসে সার্ভলেটকন্টিনিয়ার সংহত করুন
ক। সার্ভার দেখার মাধ্যমে
উপযুক্ত servletcontainer মেক এবং সংস্করণ চয়ন করুন এবং উইজার্ড মাধ্যমে হাঁটা।
খ। বা, Eclipse পছন্দ মাধ্যমে
প্রকল্পের সাথে সহযোগী সার্ভার
ক। নতুন প্রকল্পে
উইজার্ডে, ইন্টিগ্রেটেড সার্ভারে টার্গেট রানটাইম সেট করুন ।
খ। বা, বিদ্যমান প্রকল্পে
ইন লক্ষ্যপূর্ণ runtimes অধ্যায়, ইন্টিগ্রেটেড সার্ভার নির্বাচন করুন।
যেকোন উপায়েই, গ্রহপৃষ্ঠাটি স্বয়ংক্রিয়ভাবে বিল্ডপথটিতে সার্লেটকন্টেইনারের লাইব্রেরিগুলি গ্রহণ করবে। আপনি সার্ভলেট এপিআই আমদানি করতে এবং ব্যবহার করতে সক্ষম হবেন।
আপনার কোনও অবস্থাতেই প্রকল্পের বিল্ড পাথ সম্পত্তিটি ঘুরে দেখার দরকার নেই । আপনি উপরের সব উচিত না নিজে কপি / ডাউনলোড / পদক্ষেপ / পৃথক servletcontainer-নির্দিষ্ট লাইব্রেরি পছন্দ অন্তর্ভুক্ত servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
,javaee.jar
, ইত্যাদিতে শুধুমাত্র ভবিষ্যতে বহনযোগ্যতা, উপযুক্ততা, ক্লাসপাথ এবং maintainability যন্ত্রণার হতে হবে, আপনার ওয়েব অ্যাপ্লিকেশনটি কাজ করবে না যখন এটি কারণ এই লাইব্রেরিগুলি যেহেতু মূলত সংগ্রহ করা হয়েছে তার চেয়ে আলাদা মেক / সংস্করণের সার্ভলেট কন্টেইনারকে মোতায়েন করা হয়েছে।
আপনি যদি মাভেন ব্যবহার করছেন তবে আপনার অবশ্যই একেবারে নিশ্চিত করতে হবে যে লক্ষ্য রানটাইম দ্বারা ইতিমধ্যে সরবরাহ করা সার্লেটলেট কনটেনার-নির্দিষ্ট লাইব্রেরি হিসাবে চিহ্নিত হয়েছে <scope>provided</scope>
।
সংকলনের ত্রুটিগুলি সংশোধন করার অযত্ন প্রয়াসে সার্লেটলেট কনটেনার-নির্দিষ্ট লাইব্রেরি সহ আপনি যখন /WEB-INF/lib
এমনকি বা এমনকি /JRE/lib
, অন্যান্য /JRE/lib/ext
শাবকগুলি পড়তে পারেন তখন আপনি পেতে পারেন কিছু সাধারণ ব্যতিক্রম এখানে রয়েছে :
<property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/>
ইত্যাদি ইত্যাদির জন্য আমার কি হার্ড কোডের দরকার আছে
maven-archetype-webapp
-এপিআই জেআরকে নির্ভরতা হিসাবে অন্তর্ভুক্ত করছে না? প্রকল্পের একটি সংকলন ত্রুটি সহ একটি index.jsp রয়েছে। (Eclipse Luna build id: 20140612-0600, JDK 8, M2eclipse)
servlet-api
টমক্যাট, ওয়াইল্ডফ্লাই, গ্লাসফিশ ইত্যাদি সার্ভলেট রানটাইম পরিবেশ দ্বারা @ আরুন নির্ভরতা সরবরাহ করা হয়েছে। এটিকে কখনই আপনার অ্যাপের অংশ হিসাবে অন্তর্ভুক্ত করবেন না কারণ পরিবেশের সাথে এটির সংঘাতের সম্ভাবনা রয়েছে।
আপনার প্রকল্পের বৈশিষ্ট্যগুলিতে যান ( Alt+ Enterবা রি-ক্লিক সহ)
পরীক্ষা এ্যাপাচি হুল বিড়াল v7.0 অধীনে লক্ষ্যপূর্ণ রানটাইম এবং এটি কাজ করে।
The import javax.servlet cannot be resolved
।
হরির থেকে কিছুটা পার্থক্য:
প্রকল্পে ডান ক্লিক করুন ---> সম্পত্তিসমূহ --- জাভা বিল্ড পাথ ---> লাইব্রেরি যুক্ত করুন ... ---> সার্ভার রানটাইম ---> অ্যাপাচি টমক্যাট ----> সমাপ্ত।
আপনার সার্ভার লাইব ফোল্ডার থেকে servlet-api.jar অন্তর্ভুক্ত করুন।
এই পদক্ষেপটি করুন
Jomax.servlet নির্ভরতা pom.xML এ যুক্ত করুন। আপনার সমস্যা সমাধান করা হবে।
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
কুইক ফিক্স- এটি গ্রহনে কাজ করেছে - প্রকল্পে ডান ক্লিক করুন -> বৈশিষ্ট্য -> জাভা বিল্ড পাথ (ট্যাব) -> বহিরাগত জারগুলি যুক্ত করুন -> সার্লেটটি এপি জারের বাস্তবায়ন সনাক্ত করুন (যদি টমক্যাট - এটির নামযুক্ত সার্লেট-এপিআইজার) -> ঠিক আছে ক্লিক করুন। এটাই !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
R, j2ee.jar
, javaee.jar
, ইত্যাদিতে শুধুমাত্র ভবিষ্যতে বহনযোগ্যতা, উপযুক্ততা, ক্লাসপাথ এবং maintainability যন্ত্রণার হতে হবে।
আপনি কেবল অনুলিপি করতে পারেন servlet-api.jar
এবং সেই জার ফাইলগুলি লিব ফোল্ডারে কপি করতে পারেন , যা ওয়েব-আইএনএফ-এ রয়েছে। তারপরে আপনার প্রকল্পটি কেবল পরিষ্কার এবং নির্মিত করুন, আপনার ত্রুটিগুলি সমাধান হবে।
**OR**
আপনি নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করে লাইব্রেরিতে জার ফাইলগুলি সরাসরি যুক্ত করতে পারেন।
servlet-api.jar
ফাইলের পথ দিনservlet-api.jar
, jsp-api.jar
, javaee.jar
, ইত্যাদিতে শুধুমাত্র ভবিষ্যতে বহনযোগ্যতা, উপযুক্ততা, ক্লাসপাথ এবং maintainability যন্ত্রণার হতে হবে।
আমি জানি এটি একটি পুরানো পোস্ট। যাইহোক, আমি আরেকটি উদাহরণ লক্ষ্য করেছি যেখানে প্রকল্পে ইতিমধ্যে টমক্যাট যুক্ত হয়েছে তবে আমরা এখনও এই ত্রুটিটি পাই get এটি সমাধানের জন্য এটি কি করেছিলেন:
আল্ট + প্রকল্পের মুখোমুখি
প্রবেশ
করুন ডানদিকে, বিশদগুলির পাশে, অন্য একটি ট্যাব "রানটাইমস"। ইনস্টল করা টমক্যাট সার্ভারটি সেখানে তালিকাভুক্ত হবে। এটি নির্বাচন করুন।
কনফিগারেশন সংরক্ষণ করুন!
আশা করি এটি কাউকে সাহায্য করবে।
থেকে উইকিপিডিয়া ।
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
সফলভাবে আমদানি করতে) আমাকে প্রজেক্টের বৈশিষ্ট্যগুলিতে যেতে হবে , সাইডবারে প্রকল্পের দিকগুলি বেছে নিতে হবে , ডায়নামিক ওয়েব মডিউলটি টিক করুন এবং প্রয়োগ ক্লিক করুন ।
আশ্চর্যের বিষয় হল, এবার "ডায়নামিক ওয়েব মডিউল" রূপটি সঠিকভাবে ইনস্টল হয়েছে এবং আমদানিটি কাজ শুরু করে to
মাভেন প্রজেক্টের মাধ্যমে আমরা অনেকেই এক্লিপসে বিকাশ করি। যদি তা হয় তবে আপনি জ্যাম tomcat-servlet-api
এবং tomcat-jsp-api
জারের মাধ্যমে ম্যাভেনে টমকেট নির্ভরতা অন্তর্ভুক্ত করতে পারেন । টমক্যাটের প্রতিটি সংস্করণের জন্য একটি বিদ্যমান। সাধারণত provided
আপনার POM এ স্কোপ সহ এগুলি যুক্ত করা যথেষ্ট। এটি আপনার বিল্ডকে আরও বহনযোগ্য রাখবে।
আপনি যদি ভবিষ্যতে টোমকেট আপগ্রেড করেন তবে আপনি কেবল এই জারগুলির সংস্করণও আপডেট করুন।
আপনার সর্বোপরি সার্ভলেট-এপি.আইজারের মতো স্বতন্ত্র সার্লেটকন্টেইনার-নির্দিষ্ট লাইব্রেরিগুলিকে ম্যানুয়ালি অনুলিপি / ডাউনলোড / মুভি / অন্তর্ভুক্ত করা উচিত নয়
@BalusC,
আমি আমার অ্যাপ্লিকেশনটি ক্লিপস দ্বারা সরবরাহিত একটি পরিবর্তে (যখন আমি বিমূর্ত বিকাশকারী বোধ করছি) এর পরিবর্তে সঠিক ক্লাসগুলি ব্যবহার করতে পছন্দ করব।
আরেকটি সমাধান হ'ল Eclipse "বিল্ড পাথ কনফিগার করুন"> গ্রন্থাগারগুলি> বহিরাগত জার যুক্ত করুন এবং যে পাত্রে যেটি চয়ন করুন তার জন্য সার্লেট এপিআই যুক্ত করুন।
এবং পিঁপড়া তৈরি করতে ব্যবহার করার সময় @ কস্তভ দত্তের সমাধানটি অনুসরণ করুন - টমক্যাটহোম বা ওয়েবলগিকোহোমের মতো সম্পত্তি রাখুন। তবে এটি আরও একটি প্রতিবন্ধকতার পরিচয় দেয় যে ওয়েবলোগিক ব্যবহার করা হচ্ছে যদি বিকাশকারীকে তার স্থানীয় মেশিনে ওয়েবলোগিক ইনস্টল করতে হবে! অন্য কোন ক্লিনার সমাধান?
এটি কারণও হতে পারে। আমি নিম্নলিখিত সঙ্গে এসেছি 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>