development

수퍼 클래스 "javax.servlet.http.HttpServlet"이 Java 빌드 경로에 없습니다. [중복]

big-blog 2020. 2. 21. 22:30
반응형

수퍼 클래스 "javax.servlet.http.HttpServlet"이 Java 빌드 경로에 없습니다. [중복]


이 질문에는 이미 답변이 있습니다.

Eclipse에서 Maven 통합으로 만든 프로젝트가 있습니다. 모든 것이 잘 작동하지만 모든 JSP 파일의 작업 공간에는 다음이 있습니다.

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

장소가있는 첫 번째 문자열로 :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

기본 동적 웹 프로젝트와 JSP를 만들면 오류가 없습니다.


먼저 런타임을 추가하고 프로젝트 특성을 선택하십시오. 그런 다음 이미지에 표시된대로 '런타임'탭에서 서버 이름을 확인하십시오.

그림과 같이 프로젝트 패싯에서 런타임을 선택하십시오.


servlet-api-3.1.jar종속성에 포함 하십시오.

  • 메이븐

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    
  • 그래들

    configurations {
        provided
    }
    sourceSets {
        main { compileClasspath += configurations.provided }
    }
    dependencies {
        provided 'javax.servlet:javax.servlet-api:3.1.0'
    }
    

프로젝트 → 속성대상 런타임Apache Tomcat 이 나를 위해 일했습니다. 패싯 아래에는 대상 런타임이 없습니다 ( Iclipse v4.2 (Juno)).


Ant 프로젝트의 경우 :

lib폴더 에 servlet-api.jar이 있는지 확인하십시오 .

Maven 프로젝트의 경우 :

에 종속성이 추가되어 있는지 확인하십시오 POM.xml.

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

다른 방법 은 프로젝트 패싯을 업데이트하여 올바른 서버를 선택하는 것입니다.

이 위치에서이 확인란을 선택하십시오.

프로젝트 → 속성대상 런타임 → Apache Tomcat (모든 서버)


프로젝트 → 속성대상 런타임 → * Apache Tomcat이 나를 위해 일했습니다. 패싯 아래에는 대상 런타임이 없습니다 ( Iclipse v4.4 (Luna)에 있습니다).


서버 런타임에 Tomcat 서버를 추가하면 다음 작업이 수행됩니다.

프로젝트 속성대상 런타임 → "JBoss 런타임"목록에서 서버를 선택하십시오 →Finish

Apache의 경우 Apache Runtime을 선택할 수 있습니다.

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


이 단계는 실제로 도움이 될 수 있습니다.

  1. 서버를 설치하지 않은 경우 다음 단계를 수행해야합니다.

    메뉴 환경 설정Expend 서버런타임 환경추가 → 이름을 선택한 다음 PC에 이미 설치된 Apache 서버 경로를 선택하십시오 (다운로드 및 설치도 가능) → FinishOK

참고 # 자세한 정보는 여기를 클릭하십시오

  1. Tomcat 서버를 추가하십시오.

    프로젝트 속성Java 빌드 경로라이브러리 추가 → 목록에서 "서버 런타임"을 선택하십시오. → → 다음 → "Apache Tomcat"을 선택하십시오 →Finish

Ref # 이 답변


pom.xml파일 에 다음 종속성을 추가 하십시오.

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

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

서버 런타임에 Tomcat 서버를 추가하면 다음 작업이 수행됩니다.

Project properties → Java Build PathAdd LibrarySelect "Server Runtime" from the list → Next → Select "Apache Tomcat" → Finish.


Select project → PropertiesProject FacetsTarget RuntimesVMware Server.

It worked for me.


If you are not using Maven, just drop the javax.servlet-api.jar in your project lib folder.


As this is unanswered, I am guessing something other than Maven dependencies are wrong with the ops build.

While not using Maven, I have the same problem from time to time when re-creating my development environment from svn, and I always forget why and have to figure it out. Unfortunately it seems this is a problem with Eclipse.

I am able to remove all such errors from once working projects by picking just one of the dynamic web projects, or just tomcat dependent projects, and move a dependency in the build order. This seems to force all projects to rebuild properly and all of the errors are then resolved.

Right click on a web project, select "build Path" -> "Configure Build Path". Go to the tab "Order and Export", then pick a library or jar entry and move it up or down. I used the JRE System Library and moved it to the top.

Click OK, and all that red goes away!


JBoss의 경우 ... 프로젝트 → 빌드 Java 경로 → 외부 JAR 파일 추가를 마우스 오른쪽 버튼으로 클릭하십시오 .

그런 다음 jboss-folder → Commonlib → servlet-api.jar로 이동하십시오.

. . 을 클릭 OK하고 프로젝트를 새로 고친 후 실행하십시오 ...


그리고 어떤 이유로 든 아무것도 작동하지 않으면 명령 행에서 빌드하십시오.

ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 clean

ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 compile

ant -Dj2ee.server.home=D:\apache-tomcat-8.0.23 dist

참고 : https://stackoverflow.com/questions/22756153/the-superclass-javax-servlet-http-httpservlet-was-not-found-on-the-java-build



반응형