이클립스 프로젝트에서 javax.servlet / jakarta.servlet API를 Import하려면 어떻게 해야 하나요?
Eclipse에서가 'Servlets'로 .javax.servlet
jakarta.servlet
해결할 수 없습니다.「 」를 추가하려면 해야 하나요?javax.servlet
jakarta.servlet
클립립 프로 ?? ????
Eclipse 및 서버 버전이 올바른지 확인
Enterprise Java 개발자(Enterprise와 함께)를 위해 적어도 Eclipse IDE를 사용하고 있는지 확인하십시오.여기에는 동적 웹 프로젝트를 만들고 쉽게 서블릿 컨테이너를 통합할 수 있는 개발 도구가 포함되어 있습니다(이러한 도구는 Web Tools Platform(WTP)의 일부입니다).이미 Java용 Eclipse IDE를 사용하고 있고(Enterprise를 사용하지 않고) 관련 플러그인을 수동으로 설치한 경우, 올바르게 설치되지 않았을 수 있습니다.폐기하고 실제 Eclipse IDE for Enterprise Java를 손에 넣는 것이 좋습니다.
또한 Apache Tomcat, Oracle GlassFish, JBoss AS/WildFly 등과 같은 Servlet API 버전을 운영 환경에 구현한 서블릿 컨테이너가 시스템에 이미 설치되어 있는지 확인해야 합니다.보통 ZIP 파일을 다운로드하고 압축을 푸는 것만으로 충분합니다.Tomcat의 경우 Windows 기반 운영 환경 전용 EXE 형식을 다운로드하지 마십시오.a.o도 참조해 주세요.localhost에서 Tomcat Server에 필요한 여러 포트(8005, 8080, 8009)가 이미 사용되고 있습니다.
서블릿 컨테이너는 서블릿 API의 구체적인 구현입니다.Oracle.com의 Java EE SDK 다운로드에는 기본적으로 GlassFish가 포함되어 있습니다.Java EE SDK를 이미 다운로드했다면 기본적으로 GlassFish를 이미 다운로드한 것입니다.또한 GlassFish 및 JBoss AS/WildFly는 단순한 서블릿 컨테이너가 아니며 JSF, EJB, JPA 및 기타 모든 Java EE 기능을 지원합니다.a.o도 참조해 주세요.Java EE란 정확히 무엇입니까?
올바른 Servlet 패키지를 사용하고 있는지 확인합니다.
javax.*
이 「이름을 변경했습니다.jakarta.*
EE 9 (Tomcat 10, TomE 9, WildFly 22 Preview, GlassFish 6, Payara 6, Liberty 22 ) 의의let 、 Servlet API 전 5.0 。이러한 으로 하는 " " "를 치환해야 .
import javax.servlet.*;
import javax.servlet.http.*;
타고
import jakarta.servlet.*;
import jakarta.servlet.http.*;
컴파일하기 위해 이 빌드 오류가 발생할 수 있습니다.
슈퍼 클래스 "javax.servlet.http"Java 빌드 경로에서 HttpServlet"을 찾을 수 없습니다.
Eclipse에서 서버 통합 및 프로젝트 관련성
컴퓨터에 Eclipse for Enterprise Java와 서블릿 컨테이너를 모두 설치한 후 Eclipse에서 다음 단계를 수행합니다.
Eclipse에 서블릿 컨테이너 통합
a. Via Servers 뷰
아래쪽 상자에서 서버 보기를 엽니다.
오른쪽 버튼을 클릭하여 [New]> [ Server ]를 선택합니다.
적절한 서블릿 컨테이너의 제조원 및 버전을 선택하고 마법사를 진행합니다.
b. 또는 Eclipse 환경설정을 통해
프로젝트와 서버 관련지어
a. 새로운 프로젝트에서
왼쪽에 있는 프로젝트 탐색기/탐색기를 엽니다.
오른쪽 버튼을 클릭하여 [New]> [ Project ]를 선택하고 [Web]> [ Dynamic Web Project ]메뉴에서 선택합니다.
마법사에서 통합 서버로 대상 런타임을 설정합니다.
b. 또는 기존 프로젝트에서
어느 쪽이든, Eclipse는 빌드 경로에서 서블릿 컨테이너의 라이브러리를 자동으로 가져옵니다.이렇게 하면 Servlet API를 가져와 사용할 수 있습니다.
느슨한 서버 고유의 JAR 파일을 가지고 다니지 마십시오.
어떤 경우에도 프로젝트의 빌드 경로 속성을 만지작거릴 필요가 없습니다.특히 다음과 같은 개별 서블릿 컨테이너별 라이브러리를 수동으로 복사/다운로드/이동/포함하지 마십시오.servlet-api.jar
,jsp-api.jar
,el-api.jar
,j2ee.jar
,javaee.jar
웹 앱이 원래 라이브러리의 출처와는 다른 메이커/버전의 서블릿 컨테이너에 도입되어도 동작하지 않기 때문에, 장래의 휴대성, 호환성, 클래스 패스, 유지보수의 문제가 발생합니다.
이미 고유의 가 Maven으로 표시되어 있는지 .<scope>provided</scope>
볼 수 .pom.xml
다음 답변에서 Tomcat 10+, Tomcat 9-, JE 9+ 및 JE 8-에 대한 종속성 선언:Tomcat 9는 servlet을 javax.servlet에 캐스팅합니다.jakarta.servlet.http 대신 서블릿.Http Servlet
여기 몇 가지 일반적인 예외가 있습니다./WEB-INF/lib
또는 심지어/JRE/lib
,/JRE/lib/ext
컴파일 오류를 수정하려고 부주의하게 서블릿 컨테이너 고유의 라이브러리를 사용한 경우:
- java.displaces를 클릭합니다.특수한 포인터org.apache.jsp.index_jsp에 예외가 있습니다._jspInit
- java.displaces를 클릭합니다.NoClassDefFoundError: javax/EL/ELResolver
- java.displaces를 클릭합니다.No Such Field Error:IS_DIR
- java.displaces를 클릭합니다.No Such Method Error: javax.servlet.jsp.Page Context.getELContext() Ljavax/EL/ELContext;
- java.displaces를 클릭합니다.Abstract Method Error: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/ServletContext;)Ljavax/servlet/jsp/Jsp Application Context;
- org.disc.disc.disc.disc.Jasper Exception:JspFactory 유형에 대해 getJspApplicationContext(ServletContext) 메서드가 정의되지 않았습니다.
- java.displaces를 클릭합니다.VerifyError: (클래스: org/apache/jasper/runtime/JspApplicationContextImpl, 메서드: create)ELResolver 시그니처: ()Ljavax/el/ELResolver;) 호환되지 않는 인수가 기능합니다.
- 항아리가 장착되지 않았습니다.Servlet 사양 2.3, 섹션 9.7.2를 참조한다.문제 클래스: javax/servlet/Servlet.class
순서 1
프로젝트 속성으로 이동합니다(+ 또는 righ-click).Enter
순서 2
Apache Tomcat v7.0을 Target Runtime에서 확인하면 작동합니다.
Hari와 조금 다른 점:
프로젝트 ---> 속성 ---> Java 빌드 경로 ---> 라이브러리 추가... ---> 서버 런타임 ---> Apache Tomcat ----> 마침을 오른쪽 클릭합니다.
pom.xml에 javax.servlet 의존관계를 추가합니다.문제가 해결됩니다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
server lib 폴더에서 servlet-api.jar를 포함합니다.
이 단계를 수행합니다.
퀵픽스 - 이 기능은 Eclipse - 프로젝트 우클릭 -> Properties -> Java Build Path (탭) -> Add External JARs -> Servlet api jar 구현을 찾습니다(Tomcat - named servlet - api . jar ) -> [확인]을 클릭합니다.바로 그거야!!
돼요.servlet-api.jar
jar jar WEB - INF の lib 。그리고 프로젝트를 청소하고 빌드하기만 하면, 에러는 해결됩니다.
**OR**
다음 단계에 따라 jar 파일을 라이브러리에 직접 추가할 수 있습니다.
- 프로젝트를 오른쪽 클릭합니다.
- 속성으로 이동합니다.
- Java 빌드 경로로 이동합니다.
- 탭에서 라이브러리 추가 옵션을 선택합니다.
- Jar 파일 추가
- 을 터주다
servlet-api.jar
filename을 클릭합니다. - 프로젝트를 청소하고 구축합니다.
오래된 포스트인 거 알아요.그러나 프로젝트에서 Tomcat이 이미 추가되어 있는 다른 인스턴스를 확인했지만 여전히 이 오류가 발생합니다.하기 위해 이 했습니다.
Alt + 입력
측면
런타임즈설치된 Tomcat 서버가 나열됩니다.택해해선
★★★★★★★★★★★★★★★★★★★★★★★!
이게 도움이 됐으면 좋겠네요.
maven 프로젝트의 경우 다음 종속성을 추가합니다.
<!-- 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>
그래들 프로젝트의 경우:
dependencies {
providedCompile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.0.1'
}
다운로드(다운로드하다)javax.servlet.jar
프로젝트에 추가할 수 있습니다.
위키피디아에서.
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>");
}
}
물론 하다'를할 수 .servlet-api.jar
이클립스 빌드 경로로 이동합니다.일반적으로 응용 프로그램 서버(예: Tomcat)에는 올바른 jar 파일이 있습니다.
제 경우 Targeted Runtimes 화면으로 이동했을 때 Tomcat 7이 설치되었는데도 나열(비활성화)되지 않았습니다.
수정하려면 [설정(Preferences)]-> [서버(Server)]-> [런타임 환경(Runtime Environments)]으로 이동하여 Tomcat 7을 제거하고 다시 설치해야 합니다.
"Dynamic Web Module" 관련 프로젝트를 만드는 동안 null 포인터 예외가 발생했습니다.
하기 위해서( 컴파일 하기 위해서)javax.servlet
Import에 성공하려면 프로젝트의 속성으로 이동하여 사이드바에서 Project Facets를 선택하고 Dynamic Web Module을 켜고 Apply를 클릭해야 합니다.
놀랍게도 이번에는 "Dynamic Web Module" 패싯이 올바르게 설치되어 Import가 동작하기 시작했습니다.
많은 사람들이 메이븐 프로젝트를 통해 이클립스에서 개발합니다.경우 "Maven" Tomcat"을 통해 에 Tomcat 할 수 .tomcat-servlet-api
★★★★★★★★★★★★★★★★★」tomcat-jsp-api
Tomcat.jars 합니다. Tomcat ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」, 스코프 「」에 을 합니다.provided
POM ★★★이렇게 하면 빌드가 휴대성이 향상됩니다.
나중에 Tomcat을 업그레이드할 경우 이러한 jar 버전도 업데이트하기만 하면 됩니다.
저는 과 같이 해 냈습니다.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>
해결되지 않은 문제는 다음 항목을 제외했기 때문입니다.spring-boot-starter-tomcat
만 하면 요.<exclusions>...</exclusions>
종속성은 문제를 해결하지만 이 작업을 수행하면 내장된 Tomcat 서버도 제외됩니다.
Tomcat과 동일한 할 수 .compile scope
.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
특히 servlet-api.jar와 같은 개별 서블릿 컨테이너 고유의 라이브러리를 수동으로 복사/다운로드/이동/포함하지 마십시오.
@BalusC,
이클립스가 제공하는 클래스보다 내 어플리케이션이 사용하는 클래스(편집증적인 개발자처럼 느껴질 때)를 사용하고 싶다.
또 다른 솔루션은 Eclipse "Configure Build Path" > Libraries > Add External Jars를 사용하여 사용하는 컨테이너의 servlet api를 추가하는 것입니다.
또한 @kaustav data의 솔루션을 따라 antmat과 같은 속성을 구축하십시오.home 또는 weblogic.home.다만, Web Logic을 사용하고 있는 경우는, 개발자가 Web Logic을 로컬 머신에 인스톨 할 필요가 있는 제약이 있습니다.다른 클리너 솔루션은 없습니까?
언급URL : https://stackoverflow.com/questions/4076601/how-do-i-import-the-javax-servlet-jakarta-servlet-api-in-my-eclipse-project
'programing' 카테고리의 다른 글
Vue.js: 컴포넌트와플러그인과믹스인 (0) | 2022.08.25 |
---|---|
vmalloc과 kmalloc의 차이점은 무엇입니까? (0) | 2022.08.25 |
이 프로그램은 왜 "forked!"라고 4번 인쇄합니까? (0) | 2022.08.18 |
VueJS Webpack 프로젝트에서 Modernizr을 사용하는 방법 (0) | 2022.08.18 |
Vue.js에서 v-for를 사용하여 새 div를 동적으로 생성하는 방법 (0) | 2022.08.18 |