Voglio sviluppare con Servlet in Eclipse, ma dice che il pacchetto javax.servlet
non può essere risolto. Come posso aggiungere un javax.servlet
pacchetto al mio progetto Eclipse?
Voglio sviluppare con Servlet in Eclipse, ma dice che il pacchetto javax.servlet
non può essere risolto. Come posso aggiungere un javax.servlet
pacchetto al mio progetto Eclipse?
Risposte:
Assicurati di utilizzare almeno Eclipse IDE per sviluppatori Java Enterprise (con Enterprise ). Contiene strumenti di sviluppo per creare progetti Web dinamici e integrare facilmente servletcontainer (tali strumenti fanno parte di Web Tools Platform, WTP). Nel caso in cui disponessi già di Eclipse IDE per Java (senza Enterprise) e di aver installato manualmente alcuni plugin correlati, è probabile che non sia stato eseguito correttamente. Faresti meglio a distruggerlo e prendere il vero IDE Eclipse per Enterprise Java.
È inoltre necessario assicurarsi che sul computer sia già installato un servletcontainer che implementa almeno la stessa versione dell'API Servlet del servletcontainer nell'ambiente di produzione, ad esempio Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly , ecc. Solitamente, solo è sufficiente scaricare il file ZIP ed estrarlo. Nel caso di Tomcat, non scaricare il formato EXE, questo è solo per ambienti di produzione basati su Windows. Vedi anche anche Diverse porte (8005, 8080, 8009) richieste da Tomcat Server su localhost sono già in uso .
Un servletcontainer è un'implementazione concreta dell'API Servlet. Si noti che il download di Java EE SDK su Oracle.com contiene sostanzialmente GlassFish. Quindi, se ti capita di aver già scaricato Java EE SDK, allora sostanzialmente hai già GlassFish. Si noti inoltre che GlassFish e JBoss AS / WildFly sono più di un semplice servletcontainer, inoltre supportano JSF, EJB, JPA e tutte le altre fantasie Java EE. Vedi anche ao Cos'è esattamente Java EE?
Dopo aver installato Eclipse per Enterprise Java e un servletcontainer sul computer, eseguire le seguenti operazioni in Eclipse:
Integrare servletcontainer in Eclipse
un. Tramite vista Server
Apri la vista Server nella casella in basso.
Fai clic con il tasto destro del mouse e scegli Nuovo> Server .
Scegli la marca e la versione del servletcontainer appropriate e segui la procedura guidata.
b. Oppure, tramite le preferenze di Eclipse
Associare il server al progetto
un. Nel nuovo progetto
Apri Project Navigator / Explorer sul lato sinistro.
Fai clic con il pulsante destro del mouse e scegli Nuovo> Progetto, quindi nel menu Web> Progetto Web dinamico .
Nella procedura guidata, impostare Target Runtime sul server integrato.
b. Oppure, nel progetto esistente
Fare clic con il tasto destro del mouse sul progetto e selezionare Proprietà .
Nella sezione Runtime mirati , selezionare il server integrato.
Ad ogni modo, Eclipse prenderà automaticamente le librerie del servletcontainer nel percorso di compilazione. In questo modo sarai in grado di importare e utilizzare l'API Servlet.
In ogni caso non dovresti avere la necessità di armeggiare nella proprietà Build Path del progetto. Si dovrebbe soprattutto mai copiare manualmente / download / movimento / include l'individuo servletcontainer-specifiche librerie come servlet-api.jar
, jsp-api.jar
, el-api.jar
, j2ee.jar
, javaee.jar
, ecc porterebbe solo alla portabilità futuro, la compatibilità, classpath e manutenibilità guai, perché il vostro webapp non sarebbe il lavoro quando è distribuito su un servletcontainer di una marca / versione diversa rispetto a quella da cui sono originariamente ottenute quelle librerie.
Nel caso in cui si utilizzi Maven, è necessario assicurarsi che le librerie specifiche del servletcontainer che sono già fornite dal runtime di destinazione siano contrassegnate come <scope>provided</scope>
.
Qui ci sono alcune eccezioni tipici che si possono ottenere quando si sparse sul /WEB-INF/lib
o addirittura /JRE/lib
, /JRE/lib/ext
ecc con le librerie servletcontainer-specifici in un tentativo incurante di correggere gli errori di compilazione:
<property name="tomcat.home" value="D:\\Program Files\\Apache Software Foundation\\apache-tomcat-6.0.36"/>
etc
maven-archetype-webapp
non include il JAR servlet-api come dipendenza? Il progetto ha un index.jsp con errore di compilazione. (Eclipse Luna Corporatura ID: 20.140.612-0.600, JDK 8, m2eclipse)
servlet-api
dipendenze @arun sono fornite dagli ambienti di runtime Servlet come Tomcat, Wildfly, Glassfish, ecc.,. Non includerlo mai come parte della tua app, poiché esiste una buona possibilità che si scontri con l'ambiente.
Vai alle proprietà del tuo progetto (con Alt+ Entero tasto destro del mouse)
controlla Apache Tomcat v7.0 in Runtime mirato e funziona.
The import javax.servlet cannot be resolved
.
Piccola differenza da Hari:
Fare clic con il tasto destro del mouse sul progetto ---> Proprietà ---> Percorso build Java ---> Aggiungi libreria ... ---> Runtime server ---> Apache Tomcat ----> Fine.
Includi servlet-api.jar dalla cartella lib del tuo server.
Fai questo passaggio
Aggiungi la dipendenza javax.servlet in pom.xml. Il tuo problema sarà risolto.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
Correzione rapida - Funzionava in Eclipse - Tasto destro sul progetto -> Proprietà -> Percorso build Java (scheda) -> Aggiungi JAR esterni -> individua l'implementazione del vaso API del servlet (se Tomcat - si chiama servlet-api.jar) -> fai clic su OK. Questo è tutto !!
servlet-api.jar
, jsp-api.jar
, el-api.ja
R, j2ee.jar
, javaee.jar
, ecc porterebbe solo alla portabilità futuro, la compatibilità, classpath e guai manutenibilità.
puoi semplicemente copiare servlet-api.jar
e copiare i file jar nella cartella lib, che si trova in WEB-INF. quindi pulisci e costruisci il tuo progetto, i tuoi errori saranno risolti.
**OR**
è possibile aggiungere direttamente file jar alla libreria seguendo i passaggi seguenti.
servlet-api.jar
file.servlet-api.jar
, jsp-api.jar
, javaee.jar
, ecc porterebbe solo alla portabilità futuro, di compatibilità, classpath e manutenibilità guai.
So che questo è un vecchio post. Tuttavia, ho osservato un'altra istanza in cui nel progetto è già stato aggiunto Tomcat, ma viene comunque visualizzato questo errore. Fatto questo per risolvere il problema:
Alt + Inserisci
sfaccettature del progetto
Sulla destra, accanto ai dettagli, c'è un'altra scheda "Runtime". Il server Tomcat installato verrà elencato lì. Selezionalo
Salva la configurazione e FATTO!
Spero che questo aiuti qualcuno.
Da 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>");
}
}
Questo, ovviamente, funziona solo se hai aggiunto il servlet-api.jar
percorso di compilazione di Eclipse. In genere il server delle applicazioni (ad es. Tomcat ) avrà il file jar giusto.
Per i progetti Maven aggiungere la seguente dipendenza:
<!-- 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>
Per progetti di laurea:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
oppure scarica javax.servlet.jar
e aggiungi al tuo progetto.
Stavo ottenendo un'eccezione puntatore null durante la creazione del progetto relativa a "Dynamic Web Module".
Per ottenere la compilazione del progetto (ovvero l' javax.servlet
importazione corretta) sono dovuto andare alle proprietà del progetto , selezionare Facet del progetto nella barra laterale, selezionare Modulo Web dinamico e fare clic su Applica .
Sorprendentemente, questa volta la faccetta "Dynamic Web Module" è stata installata correttamente e l'importazione ha iniziato a funzionare.
Nel mio caso, quando sono andato su Targetted Runtimes , schermo, Tomcat 7 non era elencato (disabilitato) nonostante fosse installato.
Per risolvere, ho dovuto andare su Preferenze-> Server-> Ambienti di runtime quindi disinstallare e reinstallare Tomcat 7.
Molti di noi si sviluppano in Eclipse tramite un progetto Maven. In tal caso, puoi includere le dipendenze Tomcat in Maven tramite i barattoli tomcat-servlet-api
e tomcat-jsp-api
. Ne esiste una per ogni versione di Tomcat. Di solito provided
è sufficiente aggiungerli con ambito al POM. Ciò manterrà la tua build più portatile.
Se si aggiorna Tomcat in futuro, è sufficiente aggiornare anche la versione di questi vasi.
Soprattutto non copiare mai / scaricare / spostare / includere manualmente le librerie specifiche dei singoli servletcontainer come servlet-api.jar
@BalusC,
Preferirei usare le classi esatte che la mia applicazione userà piuttosto che una fornita da Eclipse (quando mi sento uno sviluppatore paranoico).
Un'altra soluzione sarebbe quella di utilizzare Eclipse "Configura percorso di costruzione"> Librerie> Aggiungi vasetti esterni e aggiungere l'API servlet di qualunque contenitore si scelga di usare.
E segui la soluzione di @kaustav datta quando usi la formica per costruire - possiedi una proprietà come tomcat.home o weblogic.home. Tuttavia introduce un altro vincolo che lo sviluppatore deve installare Weblogic sul proprio computer locale se si utilizza Weblogic! Qualche altra soluzione più pulita?
Questo potrebbe anche essere il motivo. ho pensato di seguire 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>
Il problema irrisolto era dovuto all'esclusione di spring-boot-starter-tomcat
. Basta rimuovere la <exclusions>...</exclusions>
dipendenza per risolvere il problema, ma assicurarsi che ciò escluda anche il server Tomcat incorporato.
Se hai bisogno anche di un server Tomcat incorporato puoi aggiungere la stessa dipendenza compile scope
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>