Eclipse 프로젝트에서 javax.servlet API를 가져 오려면 어떻게합니까?
Eclipse에서 서블릿으로 개발하고 싶지만 패키지 javax.servlet
를 해결할 수 없다고 말합니다 . javax.servlet
Eclipse 프로젝트에 패키지를 추가 하려면 어떻게 해야합니까?
올바른 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에서 다음 단계를 수행하십시오.
Eclipse에서 서블릿 컨테이너 통합
ㅏ. 서버보기를 통해
- 열기 서버가 아래 상자에 볼 수 있습니다.
- 거기를 마우스 오른쪽 단추로 클릭하고 새로 작성> 서버를 선택하십시오 .
적절한 서블릿 컨테이너 제조업체 및 버전을 선택하고 마법사를 안내하십시오.
비. 또는 Eclipse 환경 설정을 통해
서버와 프로젝트 연결
ㅏ. 새 프로젝트에서
- 왼쪽 에서 프로젝트 네비게이터 / 탐색기 를 엽니 다 .
- 거기에서 마우스 오른쪽 단추를 클릭하고 새로 작성> 프로젝트 를 선택한 후 메뉴 웹> 동적 웹 프로젝트를 선택하십시오 .
마법사에서 대상 런타임 을 통합 서버로 설정하십시오 .
비. 또는 기존 프로젝트에서
어느 쪽이든, 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 특정 라이브러리를 :
- org.apache.jsp.index_jsp._jspInit의 java.lang.NullPointerException
- java.lang.NoClassDefFoundError : javax / el / ELResolver
- java.lang.NoSuchFieldError : IS_DIR
- java.lang.NoSuchMethodError : javax.servlet.jsp.PageContext.getELContext () Ljavax / el / ELContext;
- java.lang.AbstractMethodError : javax.servlet.jsp.JspFactory.getJspApplicationContext (Ljavax / servlet / ServletContext;) Ljavax / servlet / jsp / JspApplicationContext;
- org.apache.jasper.JasperException : getJspApplicationContext (ServletContext) 메소드가 JspFactory 유형에 대해 정의되지 않았습니다.
- java.lang.VerifyError : (클래스 : org / apache / jasper / runtime / JspApplicationContextImpl, 메소드 : createELResolver 서명 : () Ljavax / el / ELResolver;) 함수와 호환되지 않는 인수
- 항아리가로드되지 않았습니다. 서블릿 스펙 2.3, 섹션 9.7.2를 참조하십시오. 위반 클래스 : javax / servlet / Servlet.class
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.
- Right click on project.
- Go To Properties.
- Go to Java Build Path.
- Select Add Library option from tabs.
- Add Jar Files
- give path of your
servlet-api.jar
file. - 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>
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>
'Programing' 카테고리의 다른 글
Python 3에서 execfile의 대안은 무엇입니까? (0) | 2020.03.10 |
---|---|
전체 기록 스택을 지우고 Android에서 새로운 활동을 시작하십시오. (0) | 2020.03.10 |
SSL / TLS 보안 채널 (SOAP)에 대한 신뢰 관계를 설정할 수 없습니다. (0) | 2020.03.10 |
Android의 내 응용 프로그램에서 보낸 메시지 만 가져 오려면 LogCat을 필터링 하시겠습니까? (0) | 2020.03.10 |
ArrayList를 되 돌리는 가장 간단한 방법은 무엇입니까? (0) | 2020.03.10 |