Eclipse에서 서블릿으로 개발하고 싶지만 패키지 javax.servlet
를 해결할 수 없다고 말합니다 . javax.servlet
Eclipse 프로젝트에 패키지를 추가 하려면 어떻게 해야합니까?
답변
올바른 Eclipse 및 서버인지 확인하십시오
Enterprise Java 개발자 ( Enterprise 와 함께) 용 Eclipse IDE 이상을 사용하고 있는지 확인하십시오 . 여기에는 동적 웹 프로젝트를 작성하고 서블릿 컨테이너를 쉽게 통합 할 수있는 개발 도구가 포함되어 있습니다 (이 도구는 WTP 웹 도구 플랫폼의 일부 임). 이미 Java 용 Eclipse IDE (Enterprise 제외)가 있고 일부 관련 플러그인을 수동으로 설치 한 경우 제대로 수행되지 않았을 가능성이 있습니다. 그것을 버리고 가장 좋은 방법은 Enterprise Java 용 실제 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와 연결
시스템에 Enterprise Java 용 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을 포함하십시오.
이 단계를 수행
답변
pom.xml에 javax.servlet 종속성을 추가하십시오. 문제가 해결 될 것입니다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
답변
빠른 수정-Eclipse에서 작동했습니다-프로젝트-> 속성-> Java 빌드 경로 (Tab)-> 외부 JAR 추가-> 서블릿 API jar 구현 찾기 (Tomcat-이름이 servlet-api.jar 인 경우)-> 확인을 클릭하십시오. 그게 다야 !!
답변
당신은 단순히 복사 할 수 있습니다 servlet-api.jar
및 WEB-INF에 lib 디렉토리 폴더에 그 jar 파일을 복사합니다. 그런 다음 프로젝트를 정리하고 빌드하면 오류가 해결됩니다.
**OR**
다음 단계를 사용하여 jar 파일을 라이브러리에 직접 추가 할 수 있습니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
- 속성으로 이동하십시오.
- Java 빌드 경로로 이동하십시오.
- 탭에서 라이브러리 추가 옵션을 선택하십시오.
- Jar 파일 추가
servlet-api.jar
파일 경로를 지정하십시오 .- 프로젝트를 정리하고 빌드하십시오.