Jak zaimportować javax.servlet API w moim projekcie Eclipse?

Chcę rozwijać się z Serwletami w Eclipse, ale to mówi, że pakiet javax.servlet nie może zostać rozwiązany. Jak Mogę dodać javax.servlet pakiet do mojego projektu Eclipse?

Author: BalusC, 2010-11-02

15 answers

Upewnij się, że masz odpowiedni Eclipse i Serwer

Upewnij się, że używasz co najmniej Eclipse IDE dla Enterprise Java developers (z Enterprise ). Zawiera narzędzia programistyczne do tworzenia dynamicznych projektów internetowych i łatwej integracji serwletcontainerów (narzędzia te są częścią platformy Web Tools, WTP). Jeśli masz już Eclipse IDE dla Javy (bez Enterprise) i ręcznie zainstalowałeś kilka powiązanych wtyczek, to są szanse, że nie zostało to zrobione jak należy. Najlepiej go zniszczyć i pobrać prawdziwe IDE Eclipse dla Enterprise Java one.

Musisz również upewnić się, że masz już zainstalowany servletcontainer na komputerze, który implementuje co najmniej tę samą wersję API Servleta co servletcontainer w środowisku produkcyjnym, na przykład Apache Tomcat, Oracle GlassFish, JBoss AS/WildFly , itp. Zazwyczaj wystarczy pobrać plik ZIP i rozpakować go. W przypadku Tomcat, czy Nie Pobierz format EXE, który jest tylko dla środowisk produkcyjnych opartych na Windows. Niektóre porty (8005, 8080, 8009) wymagane przez serwer Tomcat w localhost są już używane.

Servletcontainer jest konkretną implementacją API Servleta. Zauważ, że Java EE SDK Pobierz na Oracle.com zasadniczo zawiera GlassFish. Więc jeśli zdarzy ci się już pobrać Java EE SDK, to w zasadzie masz już GlassFish. Zauważ również, że na przykład GlassFish i JBoss jako / WildFly są bardziej niż tylko serwletcontainer, obsługują również JSF, EJB, JPA i wszystkie inne fanciness Java EE. Zobacz także a. o. czym dokładnie jest Java EE?


Zintegrować serwer w Eclipse i powiązać go z projektem

Po zainstalowaniu zarówno Eclipse dla Enterprise Java, jak i servletcontainer na twoim komputerze, wykonaj następujące kroki w Eclipse:]}
  1. Zintegrować servletcontainer w Eclipse

    A. Via Servers view

    • Otwórz widok serwerów w dolnym polu.

    • Kliknij prawym przyciskiem myszy i wybierz Nowy > Serwer.

    • Wybierz odpowiednią markę i wersję servletcontainer i przejdź przez kreatora.

      Tutaj wpisz opis obrazka

    B. lub poprzez preferencje Eclipse

    • Otwórz Okno > Preferencje > Serwer > Środowiska Uruchomieniowe .

    • Możesz dodać, Edytuj i Usuń tutaj serwery .

      Tutaj wpisz opis obrazka

  2. Połącz serwer z projektem

    A. w nowym projekcie

    • Otwórz Nawigator projektu / Explorer po lewej stronie.

    • Rightclick there and select New > Project And then w menu Web > Dynamic Web Project.

    • W kreatorze Ustaw docelowy Runtime na zintegrowanym serwerze.

      Tutaj wpisz opis obrazka

    B. lub w istniejącym projekcie

    • Rightclick projekt i wybierz właściwości.

    • W sekcji Targeted Runtimes wybierz serwer zintegrowany.

      Tutaj wpisz opis obrazka

    Tak czy inaczej, Eclipse automatycznie pobierze biblioteki programu servletcontainer w ścieżce budowania. W ten sposób będziesz mógł importować i używać API Servlet.


Nigdy nie nosić luźnych plików jar specyficznych dla serwera

W żadnym wypadku nie powinieneś mieć potrzeby grzebania w właściwości Build Path projektu. Powinieneś przede wszystkim nigdy ręcznie kopiować/pobierać / przenosić / dołączać poszczególne biblioteki specyficzne dla servletcontainer, takie jak servlet-api.jar, jsp-api.jar, el-api.jar, j2ee.jar, javaee.jar, itd. Doprowadziłoby to tylko do przyszłych problemów z przenośnością, kompatybilnością, klasą i konserwacją, ponieważ Twoja aplikacja webapp nie będzie działać, gdy zostanie wdrożona do programu servletcontainer innej marki/wersji niż ta, z której te biblioteki zostały pierwotnie uzyskane.

Jeśli używasz Mavena, musisz upewnić się, że biblioteki specyficzne dla servletcontainer, które są już dostarczane przez docelowy runtime, są oznaczone jako <scope>provided</scope>.

Oto niektóre typowe wyjątki, które można uzyskać, gdy zaśmiecasz /WEB-INF/lib lub nawet /JRE/lib, /JRE/lib/ext, w przeciwieństwie do innych bibliotek serwletcontainer, które nie są w stanie naprawić błędów kompilacji:

 420
Author: BalusC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-20 09:12:55

Importuj javax.servlet

Krok 1

Przejdź do właściwości twojego projektu (z Alt+Enter or righ-click)

Krok 2

Sprawdź Apache Tomcat v7.0 Pod Targeted Runtime i działa.

 223
Author: prayagupd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-12 06:19:34

Mała różnica od Hari:

Kliknij prawym przyciskiem myszy na project - - - > Properties - - - > Java Build Path - - - > Add Library... --- >Server Runtime - - - > Apache Tomcat - - - - > Finish.

 81
Author: ivanLam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-28 08:39:53

Dodaj javax.zależność servleta w pom.xml. Twój problem zostanie rozwiązany.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
 17
Author: Zeeshan Akhter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-18 09:59:53

Dołącz Servlet-api.jar z folderu lib serwera.Tutaj wpisz opis obrazka

Wykonaj ten krok

Tutaj wpisz opis obrazka

 16
Author: sarath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-18 05:37:21

Quick Fix-to działało w Eclipse-kliknij prawym przyciskiem myszy na project - > Properties - > Java Build Path (Tab) - > Add External JARs - > locate the servlet API jar implementation (if Tomcat-its named servlet-api.jar) - > kliknij OK. To jest to !!

 13
Author: Hari Gudigundla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-12 06:52:48

Możesz po prostu skopiować servlet-api.jar i skopiować pliki jar do folderu lib, który znajduje się w WEB-INF. następnie po prostu wyczyść i zbuduj swój projekt, Twoje błędy zostaną rozwiązane.

  **OR**

Możesz bezpośrednio dodać pliki jar do biblioteki, wykonując następujące czynności.

  1. Kliknij prawym przyciskiem myszy na projekt.
  2. Przejdź Do Właściwości.
  3. przejdź do ścieżki budowania Javy.
  4. Wybierz opcję Dodaj bibliotekę z zakładek.
  5. Dodaj Pliki Jar
  6. podaj ścieżkę swojego pliku servlet-api.jar.
  7. oczyść i zbuduj swój projekt.
 5
Author: Mitul Maheshwari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-08 04:57:17

Wiem, że to stary post. Jednak zaobserwowałem inny przypadek, w którym w projekcie już dodał Tomcat, ale nadal otrzymujemy ten błąd. Czy to w celu rozwiązania tego:
Alt + Enter
Aspekty Projektu
po prawej stronie, obok szczegółów, znajduje się kolejna zakładka "Runtimes". Zainstalowany serwer tomcat zostanie tam wymieniony. Wybierz go.
Zapisz konfigurację i gotowe!

Mam nadzieję, że to komuś pomoże.

 5
Author: PKU,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-19 16:20:27

Dla projektów maven dodaj następujące zależności:

<!-- 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>

Odniesienie

Dla projektów gradle:

dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}

Lub Pobierz javax.servlet.jar i dodaj do swojego projektu.

 4
Author: Joby Wilson Mathews,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-31 14:09:17

Z Wikipedii .

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>");
  }
}

To oczywiście działa tylko wtedy, gdy dodałeś {[1] } do ścieżki budowania Eclipse. Zazwyczaj Twój serwer aplikacji (np. Tomcat) będzie miał odpowiedni plik jar.

 3
Author: Juha Syrjälä,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-02 10:11:31

W moim przypadku, gdy poszedłem do Targetted Runtimes, screen, Tomcat 7 nie był wymieniony (wyłączony) pomimo zainstalowania.

Aby to naprawić, musiałem przejść do Preferences->Server->Runtime Environments następnie odinstalować i ponownie zainstalować Tomcat 7.
 3
Author: Paul LeBeau,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-31 11:14:04

Podczas tworzenia projektu otrzymywałem wyjątek wskaźnika null związany z "dynamicznym modułem internetowym".

Aby projekt się skompilował (tzn. aby javax.servlet zaimportować pomyślnie) musiałem przejść do właściwości , wybrać aspekty projektu na pasku bocznym, zaznaczyć Dynamic Web Module i kliknąć Apply.

Zaskakująco, tym razem" Dynamic Web Module " facet zainstalowany poprawnie i import zaczął działać.

 2
Author: Ivan Vučica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-09 15:41:07

Wielu z nas rozwija się w Eclipse poprzez projekt Maven. Jeśli tak, możesz dodawać zależności Tomcat do Mavena za pomocą słoików tomcat-servlet-api i tomcat-jsp-api. Jeden istnieje dla każdej wersji Tomcat. Zazwyczaj wystarczy dodać je z scope provided do POM. Dzięki temu Twoja konstrukcja będzie bardziej przenośna.

Jeśli w przyszłości zaktualizujesz Tomcat, po prostu zaktualizujesz wersję tych słoików.

 2
Author: Erica Kane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-29 15:14:38

Przede wszystkim nigdy nie powinieneś ręcznie kopiować/pobierać / przenosić / dołączać poszczególnych bibliotek specyficznych dla servletcontainer, takich jak servlet-api.jar

@BalusC,

Wolałbym używać dokładnie tych klas, z których będzie korzystać moja aplikacja, a nie tych dostarczonych przez Eclipse (kiedy czuję się jak paranoiczny programista).

Innym rozwiązaniem byłoby użycie Eclipse "Configure Build Path" > Libraries > Add External Jars, and add servlet api of niezależnie od tego, jaki kontener wybierzesz.

I postępuj zgodnie z rozwiązaniem @ kaustav datta, gdy używasz ant do budowania-miej właściwość taką jak tomcat.home lub weblogic.do domu. Wprowadza jednak inne ograniczenie, że programista musi zainstalować Weblogic na swojej lokalnej maszynie, jeśli jest używany WebLogic ! Jakieś inne czystsze rozwiązanie?

 0
Author: RuntimeException,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-29 16:23:38

To może być również powodem. wymyśliłem następujące 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>

Nierozwiązany problem wynikał z wyłączenia spring-boot-starter-tomcat. Po prostu usuń <exclusions>...</exclusions> zależność, która usunie problem, ale upewnij się, że spowoduje to również wyłączenie wbudowanego serwera tomcat.

Jeśli potrzebujesz wbudowanego serwera tomcat, możesz dodać tę samą zależność za pomocą compile scope.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>compile</scope>
</dependency>
 0
Author: Muhammad Usman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-09 11:56:01