복붙노트

[SPRING] 동적 웹 모듈 3.0 - 3.1

SPRING

동적 웹 모듈 3.0 - 3.1

나는 봄베이 3.2.4 웹 애플리케이션으로 구성된 mavenized 코드베이스를 가지고있다. 처음에 Maven / pom.xml을 사용하여 앱을 빌드 할 때 web.xml이 누락되었다는 오류가 발생했습니다. 먼저 비어있는 web.xml을 만들려고했습니다. 이것은 프로젝트 패싯이 변경된 순간이었습니다 (그리고 왜 그런지 모르겠습니다). 그것은 동적 웹 모듈 3.0에서 3.1로 전환되었으며 이것은 되돌릴 수 없습니다. 동적 웹 모듈 3.0으로 다시 변경하려면 어떻게해야합니까 ???

또한 JAX-RS를 제거 할 수 없습니다. 이것을 시도하면 다음과 같은 결과가 나옵니다.

Failed while uninstalling JAX-RS (REST Web Services) 1.0.
org.eclipse.jst.javaee.web.internal.impl.WebAppImpl cannot be cast to org.eclipse.jst.j2ee.webapplication.WebApp

나중에 pom.xml에 해당 플러그인을 삽입하여 Maven 컴파일 오류를 피할 수 있음을 알았다.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

해결법

  1. ==============================

    1.나는 이클립스에서 비슷한 문제를 겪었고 그것을 해결할 수있는 유일한 방법은

    나는 이클립스에서 비슷한 문제를 겪었고 그것을 해결할 수있는 유일한 방법은

    기본적으로 웹 모듈을 적용하기 전에 웹 모듈을 / WebContent /에있는 웹 파일을 찾도록 구성해야합니다. 이것은 Maven 프로젝트 구조가되어야하는 것이 아닙니다.

    편집하다:

    다른 도움이되지 않는 경우의 두 번째 방법입니다.

  2. ==============================

    2.버전 3.1을 사용하려면 다음 스키마를 사용해야합니다.

    버전 3.1을 사용하려면 다음 스키마를 사용해야합니다.

    3.0과 3.1은 다릅니다. 3.1에서는 Sun이 언급하지 않으므로 3_0.xsd를 3_1.xsd로 변경하면 작동하지 않습니다.

    이것은 다음과 같이 보입니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee" 
             xmlns:web="http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee">
    
    </web-app>
    

    또한 pom.xml의 최신 버전에 의존하는지 확인하십시오. 그건,

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.6</version>
        <configuration>
            ...
        </configuration>
    </plugin>
    

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

    마지막으로 Java 7 또는 8로 컴파일해야합니다.

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
            <source>1.7</source>
            <target>1.7</target>
        </configuration>
    </plugin>
    
  3. ==============================

    3.나는 같은 문제를 안고 org.eclipse.wst.common.project.facet.core.xml을 편집하여이를 수정했다.

    나는 같은 문제를 안고 org.eclipse.wst.common.project.facet.core.xml을 편집하여이를 수정했다.

    이 파일에서 다음 줄을 바꿀 수있었습니다.

    <installed facet="jst.web" version="3.1"/>
    

    돌아가다

    <installed facet="jst.web" version="3.0"/>
    

    그것은 저를 위해 문제를 고치는 것처럼 보였다.

  4. ==============================

    4.Win7, Tomcat7에서 Eclipse Mars에 maven-pom setup을 실행하고 있었는데, maven 프로젝트를 사용할 수있게되었습니다. 실행되지 않는 서버에서는이 화면에서 3.1에서 3.0으로 변경해야했습니다.

    Win7, Tomcat7에서 Eclipse Mars에 maven-pom setup을 실행하고 있었는데, maven 프로젝트를 사용할 수있게되었습니다. 실행되지 않는 서버에서는이 화면에서 3.1에서 3.0으로 변경해야했습니다.

    동적 웹 모듈을 비활성화하는 것이 중요했습니다. 그런 다음 버전을 변경 한 다음 동적 웹 모듈을 다시 활성화하십시오.

  5. ==============================

    5.프로젝트 패싯의 Eclipse 프로젝트 속성 열기, "동적 웹 모듈"선택 취소 ... 확인을 클릭하십시오. 메이븐 (Maven) -> 프로젝트 업데이트

    프로젝트 패싯의 Eclipse 프로젝트 속성 열기, "동적 웹 모듈"선택 취소 ... 확인을 클릭하십시오. 메이븐 (Maven) -> 프로젝트 업데이트

  6. ==============================

    6.특정 경우에 문제는 동적 웹 애플리케이션 용으로 릴리스 된 maven-archetype-webapp로 인해 발생합니다 (ver.2.5 (제작 된 web.xml 및 관련 xsd 참조) 및 eclipse와 관련됨). 프로젝트 패싯을 동적 webapp> 2.5로 변경하려고하면 src 폴더 구조가 문법적으로 변경됩니다 (2.5는 3.1과 다릅니다).

    특정 경우에 문제는 동적 웹 애플리케이션 용으로 릴리스 된 maven-archetype-webapp로 인해 발생합니다 (ver.2.5 (제작 된 web.xml 및 관련 xsd 참조) 및 eclipse와 관련됨). 프로젝트 패싯을 동적 webapp> 2.5로 변경하려고하면 src 폴더 구조가 문법적으로 변경됩니다 (2.5는 3.1과 다릅니다).

    따라서 변경 사항을 적용 할 경우 null 포인터 예외가 발생합니다.

    이를 해결하려면 프로젝트 패싯 구성에서 기본 구성을 설정해야합니다. 변경 사항을 적용한 다음 Java 빌드 경로로 이동하여 / src 폴더를 제거하고 적어도 / src / main / resources 및 / src / test / java가 있어야 / src / main / java 폴더를 만들어야합니다. 요구 사항 (3.0, 3.1)으로 다시 변경 한 다음 적용하십시오.

  7. ==============================

    7.org.eclipse.wst.common.project.facet.core.xml 프로젝트를 열고 먼저 웹 모듈 태그로 라인을 삭제했다. 클리닝 된 프로젝트이고 매번 Tomcat에서 시작되었지만 여전히 실행되지 않았습니다. 반환 된 라인 (있는 그대로) 및 정리 된 프로젝트 Eclipse에서 Tomcat 설정을 열고 수동으로 Tomcat 시작 프로젝트에 추가했습니다 (마우스 오른쪽 단추 + 추가 및 제거). 프로젝트를 클릭하고 서버에서 실행 ...을 선택하면 모든 것이 잘되었습니다.

    org.eclipse.wst.common.project.facet.core.xml 프로젝트를 열고 먼저 웹 모듈 태그로 라인을 삭제했다. 클리닝 된 프로젝트이고 매번 Tomcat에서 시작되었지만 여전히 실행되지 않았습니다. 반환 된 라인 (있는 그대로) 및 정리 된 프로젝트 Eclipse에서 Tomcat 설정을 열고 수동으로 Tomcat 시작 프로젝트에 추가했습니다 (마우스 오른쪽 단추 + 추가 및 제거). 프로젝트를 클릭하고 서버에서 실행 ...을 선택하면 모든 것이 잘되었습니다.

  8. ==============================

    8.1) 프로젝트로 가서 ".settings"디렉토리를 찾으십시오. 2) 이름이 열린 xml 파일 : org.eclipse.wst.common.project.facet.core.xml 삼)

    1) 프로젝트로 가서 ".settings"디렉토리를 찾으십시오. 2) 이름이 열린 xml 파일 : org.eclipse.wst.common.project.facet.core.xml 삼)

    <?xml version="1.0" encoding="UTF-8"?>
        <faceted-project>
        <fixed facet="wst.jsdt.web"/>
        <installed facet="java" version="1.5"/>
        <installed facet="jst.web" version="2.3"/>
        <installed facet="wst.jsdt.web" version="1.0"/>
     </faceted-project>
    

    jst.web 버전을 3.0으로 변경하고 Java 버전을 1.7 또는 1.8 (현재 jdk 버전을 기반으로 변경)

    4) WEB-INF 디렉토리에서 web.xml 파일을 변경하십시오.이 기사를 참조하십시오. https://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/ 5) pom.xml 파일로 이동하여 다음 행을 붙여 넣습니다.

    <build>
        <finalName>YOUR_PROJECT_NAME</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source> THIS IS YOUR USING JDK's VERSION
                    <target>1.8</target> SAME AS ABOVE
                </configuration>
            </plugin>
        </plugins>
    </build>  
    
  9. from https://stackoverflow.com/questions/19661135/dynamic-web-module-3-0-3-1 by cc-by-sa and MIT license