Saya ingin mengembangkan dengan Servlets di Eclipse, tetapi dikatakan bahwa paket javax.servlet
tidak dapat diselesaikan. Bagaimana saya bisa menambahkan javax.servlet
paket ke proyek Eclipse saya?
Saya ingin mengembangkan dengan Servlets di Eclipse, tetapi dikatakan bahwa paket javax.servlet
tidak dapat diselesaikan. Bagaimana saya bisa menambahkan javax.servlet
paket ke proyek Eclipse saya?
Jawaban:
Pastikan Anda menggunakan setidaknya Eclipse IDE untuk pengembang Enterprise Java (dengan Enterprise ). Ini berisi alat pengembangan untuk membuat proyek web yang dinamis dan mudah mengintegrasikan servletcontainers (alat tersebut adalah bagian dari Platform Alat Web, WTP). Jika Anda sudah memiliki Eclipse IDE untuk Java (tanpa Enterprise), dan secara manual menginstal beberapa plugin terkait, maka kemungkinannya adalah itu tidak dilakukan dengan benar. Anda sebaiknya membuangnya dan mengambil Eclipse IDE asli untuk Enterprise Java satu.
Anda juga perlu memastikan bahwa Anda sudah memiliki servletcontainer yang diinstal pada mesin Anda yang mengimplementasikan setidaknya versi Servlet API yang sama dengan servletcontainer di lingkungan produksi, misalnya Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , dll. Biasanya, hanya mengunduh file ZIP dan mengekstraknya sudah cukup. Dalam kasus Tomcat, jangan tidak men-download format EXE, itu hanya untuk lingkungan produksi berbasis Windows. Lihat juga ao. Beberapa port (8005, 8080, 8009) yang diperlukan oleh Tomcat Server di localhost sudah digunakan .
Servletcontainer adalah implementasi konkret dari Servlet API. Perhatikan bahwa unduhan Java EE SDK di Oracle.com pada dasarnya mengandung GlassFish. Jadi jika Anda sudah mengunduh Java EE SDK, maka pada dasarnya Anda sudah memiliki GlassFish. Perhatikan juga bahwa misalnya GlassFish dan JBoss AS / WildFly lebih dari sekadar servletcontainer, mereka juga mendukung JSF, EJB, JPA, dan semua kefasikan Java EE lainnya. Lihat juga ao. Apa sebenarnya Java EE?
Setelah menginstal Eclipse untuk Enterprise Java dan servletcontainer di komputer Anda, lakukan langkah-langkah berikut di Eclipse:
Integrasikan servletcontainer di Eclipse
Sebuah. Melalui tampilan Server
Buka tampilan Server di kotak bawah.
Klik kanan di sana dan pilih New> Server .
Pilih servletcontainer yang sesuai dibuat dan versi dan berjalan melalui wizard.
b. Atau, melalui preferensi Eclipse
Hubungkan server dengan proyek
Sebuah. Dalam proyek baru
Buka Project Navigator / Explorer di sebelah kiri.
Klik kanan di sana dan pilih New> Project dan kemudian di menu Web> Dynamic Web Project .
Di wizard, atur Target Runtime ke server terintegrasi.
b. Atau, dalam proyek yang ada
Either way, Eclipse kemudian akan secara otomatis mengambil pustaka servletcontainer di jalur build. Dengan cara ini Anda akan dapat mengimpor dan menggunakan Servlet API.
Dalam hal apa pun Anda tidak perlu bermain-main di properti Build Path proyek. Anda harus di atas semua tidak pernah secara manual copy / download / memindahkan / memasukkan servletcontainer spesifik individu perpustakaan seperti servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
,javaee.jar
, dll hanya akan menyebabkan portabilitas masa depan, kompatibilitas, masalah classpath dan rawatan, karena webapp Anda akan tidak bekerja ketika itu dikerahkan ke servletcontainer dari make / versi yang berbeda dari tempat perpustakaan itu awalnya berasal.
Jika Anda menggunakan Maven, Anda harus benar-benar memastikan bahwa pustaka khusus servletcontainer yang sudah disediakan oleh runtime target ditandai sebagai <scope>provided</scope>
.
Berikut adalah beberapa pengecualian khas yang dapat Anda dapatkan ketika Anda sampah /WEB-INF/lib
atau bahkan /JRE/lib
, /JRE/lib/ext
, dll dengan perpustakaan servletcontainer spesifik dalam upaya ceroboh untuk memperbaiki kesalahan kompilasi:
<property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/>
etc
maven-archetype-webapp
tidak termasuk servlet-api JAR sebagai ketergantungan? Proyek ini memiliki index.jsp dengan kesalahan kompilasi. (Eclipse Luna Build id: 20140612-0600, JDK 8, M2eclipse)
servlet-api
Ketergantungan @arun disediakan oleh lingkungan runtime Servlet seperti Tomcat, Wildfly, Glassfish, dll.,. Jangan pernah memasukkannya sebagai bagian dari aplikasi Anda, karena ada kemungkinan itu berbenturan dengan lingkungan.
Buka properti proyek Anda (dengan Alt+ Enteratau klik kanan)
periksa Apache Tomcat v7.0 di bawah Targeted Runtime dan berfungsi.
The import javax.servlet cannot be resolved
.
Sedikit perbedaan dari Hari:
Klik kanan pada proyek ---> Properties ---> Java Build Path ---> Tambah Library ... ---> Server Runtime ---> Apache Tomcat ----> Finish.
Sertakan servlet-api.jar dari folder lib server Anda.
Lakukan langkah ini
Tambahkan dependensi javax.servlet di pom.xml. Masalah Anda akan teratasi.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Perbaikan Cepat- Ini berfungsi di Eclipse - Klik kanan pada proyek -> Properti -> Java Build Path (Tab) -> Tambahkan External JARs -> cari implementasi servlet api jar (jika Tomcat - namanya servlet-api.jar) -> klik OK. Itu dia !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
r, j2ee.jar
, javaee.jar
, dll hanya akan menyebabkan portabilitas masa depan, kompatibilitas, classpath dan masalah pemeliharaan.
Anda cukup menyalin servlet-api.jar
dan menyalin file jar itu ke folder lib, yang ada di WEB-INF. lalu bersihkan dan bangun proyek Anda, kesalahan Anda akan terpecahkan.
**OR**
Anda bisa langsung menambahkan file jar ke perpustakaan dengan menggunakan langkah-langkah berikut.
servlet-api.jar
file Anda .servlet-api.jar
, jsp-api.jar
, javaee.jar
, dll hanya akan menyebabkan masalah portabilitas masa depan, kompatibilitas, classpath dan pemeliharaan.
Saya tahu ini adalah pos lama. Namun, saya mengamati contoh lain di mana dalam proyek ini sudah ditambahkan Tomcat tetapi kami masih mendapatkan kesalahan ini. Apakah ini untuk menyelesaikan itu:
Alt + Masukkan
Aspek Proyek
Di sebelah kanan, di sebelah detail, adalah tab lain "Runtimes". Server tomcat yang terinstal akan terdaftar di sana. Pilih itu.
Simpan konfigurasi dan DILAKUKAN!
Semoga ini bisa membantu seseorang.
Dari wikipedia .
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>");
}
}
Ini, tentu saja, hanya berfungsi jika Anda telah menambahkan servlet-api.jar
jalur membangun ke Eclipse. Biasanya server aplikasi Anda (mis. Tomcat ) akan memiliki file jar yang tepat.
Untuk proyek pakar menambahkan ketergantungan berikut:
<!-- 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>
Untuk proyek gradle:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
atau unduh javax.servlet.jar
dan tambahkan ke proyek Anda.
Saya mendapatkan pengecualian pointer nol selama pembuatan proyek yang terkait dengan "Modul Web Dinamis".
Untuk mendapatkan proyek untuk dikompilasi (yaitu, untuk javax.servlet
mengimpor berhasil) Saya harus pergi ke Properti proyek , pilih Aspek Proyek di bilah samping, centang Modul Web Dinamis dan klik Terapkan .
Anehnya, kali ini "Modul Web Dinamis" segi dipasang dengan benar, dan impor mulai bekerja.
Dalam kasus saya, ketika saya pergi ke Targetted Runtimes , layar, Tomcat 7 tidak terdaftar (dinonaktifkan) meskipun sedang diinstal.
Untuk memperbaikinya, saya harus pergi ke Preferences-> Server-> Runtime Environments lalu uninstall dan instal ulang Tomcat 7.
Banyak dari kita berkembang di Eclipse melalui proyek Maven. Jika demikian, Anda bisa memasukkan dependensi Tomcat di Maven via the tomcat-servlet-api
and tomcat-jsp-api
guci. Satu ada untuk setiap versi Tomcat. Biasanya menambahkan ini dengan cakupan provided
ke POM Anda sudah cukup. Ini akan membuat bangunan Anda lebih portabel.
Jika Anda meningkatkan Tomcat di masa depan, Anda cukup memperbarui versi guci ini juga.
Anda harus di atas semua tidak pernah secara manual menyalin / mengunduh / memindahkan / menyertakan pustaka servletcontainer khusus individu seperti servlet-api.jar
@BalusC,
Saya lebih suka menggunakan kelas-kelas persis yang akan digunakan aplikasi saya daripada yang disediakan oleh Eclipse (ketika saya merasa seperti pengembang paranoid).
Solusi lain adalah dengan menggunakan Eclipse "Configure Build Path"> Libraries> Add External Jars, dan tambahkan servlet api dari Container apa pun yang dipilih untuk digunakan.
Dan ikuti solusi @kaustav datta saat menggunakan semut untuk membangun - miliki properti seperti tomcat.home atau weblogic.home. Namun itu memperkenalkan kendala lain bahwa pengembang harus menginstal Weblogic di mesin lokalnya jika weblogic digunakan! Ada solusi pembersih lainnya?
Ini bisa juga menjadi alasannya. Saya telah datang dengan mengikuti 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>
Masalah yang belum terselesaikan adalah karena pengecualian spring-boot-starter-tomcat
. Hapus saja <exclusions>...</exclusions>
ketergantungan itu akan menyelesaikan masalah, tapi pastikan melakukan ini juga akan mengecualikan server tomcat tertanam.
Jika Anda memerlukan tomcat server tertanam juga, Anda dapat menambahkan ketergantungan yang sama dengannya compile scope
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>