Programing

Eclipse 프로젝트에서 javax.servlet API를 가져 오려면 어떻게합니까?

lottogame 2020. 3. 10. 08:19
반응형

Eclipse 프로젝트에서 javax.servlet API를 가져 오려면 어떻게합니까?


Eclipse에서 서블릿으로 개발하고 싶지만 패키지 javax.servlet를 해결할 수 없다고 말합니다 . javax.servletEclipse 프로젝트에 패키지를 추가 하려면 어떻게 해야합니까?


올바른 Eclipse 및 서버인지 확인하십시오

Java EE 개발자 ( EE 와 함께) 용 Eclipse IDE 이상을 사용하고 있는지 확인하십시오 . 여기에는 동적 웹 프로젝트를 작성하고 서블릿 컨테이너를 쉽게 통합 할 수있는 개발 도구가 포함되어 있습니다 (이 도구는 WTP 웹 도구 플랫폼의 일부 임). 이미 Java 용 Eclipse IDE (EE 제외)가 있고 일부 EE 관련 플러그인을 수동으로 설치 한 경우 제대로 수행되지 않았을 가능성이 있습니다. 그것을 버리고 가장 좋은 Java EE 용 Eclipse IDE를 잡는 것이 가장 좋습니다.

또한 프로덕션 환경의 서블릿 컨테이너와 최소한 동일한 서블릿 API 버전을 구현하는 서블릿 컨테이너가 시스템에 이미 설치되어 있는지 확인해야합니다 (예 : Apache Tomcat , Oracle GlassFish , JBoss AS / WildFly 등). ZIP 파일을 다운로드하고 압축을 풀면 충분합니다. Tomcat의 경우 EXE 형식을 다운로드 하지 마십시오 . 이는 Windows 기반 프로덕션 환경 전용입니다. ao localhost의 Tomcat Server에 필요한 여러 포트 (8005, 8080, 8009)가 이미 사용 중 입니다.

서블릿 컨테이너는 서블릿 API의 구체적인 구현입니다. 점을 유의 자바 EE SDK의 Oracle.com에서 다운로드가 기본적으로 글래스 피쉬가 포함되어 있습니다. 따라서 Java EE SDK를 이미 다운로드 한 경우 기본적으로 GlassFish가 있습니다. 또한 GlassFish 및 JBoss AS / WildFly는 서블릿 컨테이너 이상의 기능을 제공하며 JSF, EJB, JPA 및 기타 모든 Java EE 성능도 지원합니다. ao Java EE 란 무엇입니까?


Eclipse에서 서버를 통합하고 Project와 연결

시스템에 Java EE 용 Eclipse 및 서블릿 컨테이너를 모두 설치 한 후 Eclipse에서 다음 단계를 수행하십시오.

  1. Eclipse에서 서블릿 컨테이너 통합

    ㅏ. 서버보기를 통해

    • 열기 서버가 아래 상자에 볼 수 있습니다.
    • 거기를 마우스 오른쪽 단추로 클릭하고 새로 작성> 서버를 선택하십시오 .
    • 적절한 서블릿 컨테이너 제조업체 및 버전을 선택하고 마법사를 안내하십시오.

      여기에 이미지 설명을 입력하십시오

    비. 또는 Eclipse 환경 설정을 통해

    • 열기 창> 환경 설정> 서버> 런타임 환경 .
    • 여기에서 서버를 추가 , 편집제거 할 수 있습니다 .

      여기에 이미지 설명을 입력하십시오

  2. 서버와 프로젝트 연결

    ㅏ. 새 프로젝트에서

    • 왼쪽 에서 프로젝트 네비게이터 / 탐색기엽니 다 .
    • 거기에서 마우스 오른쪽 단추를 클릭하고 새로 작성> 프로젝트 를 선택한 후 메뉴 웹> 동적 웹 프로젝트를 선택하십시오 .
    • 마법사에서 대상 런타임 을 통합 서버로 설정하십시오 .

      여기에 이미지 설명을 입력하십시오

    비. 또는 기존 프로젝트에서

    • 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오 .
    • 에서 대상 런타임의 섹션에서 통합 서버를 선택합니다.

      여기에 이미지 설명을 입력하십시오

    어느 쪽이든, Eclipse는 자동으로 빌드 경로에서 서블릿 컨테이너의 라이브러리를 가져옵니다. 이 방법으로 서블릿 API를 가져오고 사용할 수 있습니다.


느슨한 서버 특정 JAR 파일을 가지고 다니지 마십시오.

어떤 경우 든 프로젝트 빌드 경로 특성 을 피할 필요가 없습니다 . 당신은 위의 모든해야 결코 / 다운로드 / 이동 / 라이브러리 좋아하는 개별 servletcontainer 특정 포함 복사 수동 servlet-api.jar, jsp-api.jar, el-api.jar, j2ee.jar, javaee.jar당신의 웹 애플리케이션은 그렇지 않은 일입니다 것입니다 경우 때문에, 그것은 단지 미래의 이식성, 호환성, 클래스 경로 및 유지 보수 문제로 이어질 것 등 해당 라이브러리를 원래 얻은 위치와 다른 make / version의 서블릿 컨테이너에 배포했습니다.

Maven을 사용하는 경우 대상 런타임에서 이미 제공 한 서블릿 컨테이너 특정 라이브러리가로 표시되어 있는지 확인해야합니다 <scope>provided</scope>.

여기 때 당신에게 쓰레기 당신이 얻을 수있는 몇 가지 일반적인 예외 인 /WEB-INF/lib또는 /JRE/lib, /JRE/lib/ext등 컴파일 오류를 수정 부주의 시도에서 servletcontainer 특정 라이브러리를 :


javax.servlet 가져 오기

1 단계

프로젝트의 속성 으로 이동 하십시오 ( Alt+ Enter또는 마우스 클릭으로)

2 단계

확인 아파치 톰캣 7.0 에서 대상 런타임 과 작동합니다.


Hari와의 약간의 차이 :

프로젝트 ---> 속성 ---> Java 빌드 경로 ---> 라이브러리 추가 ... ---> 서버 런타임 ---> Apache Tomcat ----> 마침을 마우스 오른쪽 버튼으로 클릭하십시오.


서버 lib 폴더에서 servlet-api.jar을 포함하십시오.여기에 이미지 설명을 입력하십시오

이 단계를 수행

여기에 이미지 설명을 입력하십시오


Quick Fix- This worked in Eclipse - Right Click on project -> Properties -> Java Build Path (Tab) -> Add External JARs -> locate the servlet api jar implementation (if Tomcat - its named servlet-api.jar) -> click OK. That's it !!


Add javax.servlet dependency in pom.xml. Your problem will be resolved.

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>

you can simply copy the servlet-api.jar and copy that jar files into lib folder, which is in WEB-INF. then just clean and built your project, your errors will be solved.

  **OR**

you can directly add jar files to library by using following steps.

  1. Right click on project.
  2. Go To Properties.
  3. Go to Java Build Path.
  4. Select Add Library option from tabs.
  5. Add Jar Files
  6. give path of your servlet-api.jar file.
  7. Clean and build your project.

I know this is an old post. However, I observed another instance where in the project already has Tomcat added but we still get this error. Did this to resolve that:
Alt + Enter
Project Facets
On the right, next to details, is another tab "Runtimes". The installed tomcat server will be listed there. Select it.
Save the configuration and DONE!

Hope this helps someone.


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

This, of course, works only if you have added the servlet-api.jar to Eclipse build path. Typically your application server (e.g Tomcat) will have the right jar file.


I was getting a null pointer exception during project creation related to "Dynamic Web Module".

To get the project to compile (that is, to javax.servlet to import successfully) I had to go to project's Properties, pick Project Facets in the sidebar, tick Dynamic Web Module and click Apply.

Surprisingly, this time "Dynamic Web Module" facet installed correctly, and import started to work.


In my case, when I went to the Targetted Runtimes, screen, Tomcat 7 was not listed (disabled) despite being installed.

To fix, I had to go to Preferences->Server->Runtime Environments then uninstall and reinstall Tomcat 7.


Many of us develop in Eclipse via a Maven project. If so, you can include Tomcat dependencies in Maven via the tomcat-servlet-api and tomcat-jsp-api jars. One exists for each version of Tomcat. Usually adding these with scope provided to your POM is sufficient. This will keep your build more portable.

If you upgrade Tomcat in the future, you simply update the version of these jars as well.


For maven projects add following dependancy :

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

Reference

For gradle projects:

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

or download javax.servlet.jar and add to your project.


You should above all never manually copy/download/move/include the individual servletcontainer-specific libraries like servlet-api.jar

@BalusC,

I would prefer to use the exact classes that my application is going to use rather than one provided by Eclipse (when I am feeling like a paranoid developer).

Another solution would be to use Eclipse "Configure Build Path" > Libraries > Add External Jars, and add servlet api of whatever Container one chooses to use.

And follow @kaustav datta's solution when using ant to build - have a property like tomcat.home or weblogic.home. However it introduces another constraint that the developer must install Weblogic on his/her local machine if weblogic is being used ! Any other cleaner solution?


This could be also the reason. i have come up with following 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>

The unresolved issue was due to exclusion of spring-boot-starter-tomcat. Just remove <exclusions>...</exclusions> dependency it will ressolve issue, but make sure doing this will also exclude the embedded tomcat server.

If you need embedded tomcat server too you can add same dependency with compile scope.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>compile</scope>
</dependency>

참고 : https://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-api-in-my-eclipse-project

반응형