오류 Cannot change version of project facet Dynamic Web Module to 2.5.

개발툴|2014. 5. 21. 09:10

팀 동료의 이클립스 Problems 뷰에서 다음과 같은 설정 에러가 보였다.

Cannot change version of project facet Dynamic Web Module to 2.5.

Dynamic Web Module을 2.5 버전으로 바꾸려고 하는데 할 수 없다는 에러 였다.


다음과 같이 JDK 1.7에 Dynamic Web Module 3.0으로 잘 설정되어 있는 상태이다. 헌데 왜 Dynamic Web Module 2.5로 바꾸려고 하는지 모르겠다.



혹시나 해서 workspace의 .settings디렉토리의 org.eclipse.wst.common.project.facet.core.xml 파일을 열어 보았다.

이 또한 정상적으로 잘 등록되어 있었다. 이 파일을 확인해 보는 이유는 jst.web 버전이 2.5로 등록되어 있는 경우가 있었기 때문이고, 이로 인하여 Problems 뷰에 오류가 발생한 것을 경험해 봤기 때문이다.

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="Apache Tomcat v7.0"/>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="java" version="1.7"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
</faceted-project>
cs


뭔가 다른 문제가 있을 것 같다는 생각이 들었고, 혹시 web.xml에 정의되어 있는 XML 스키마 설정이 잘못되어 있는 것일까 싶어 확인해 보니 다음과 같이 되어 있었다.

1
2
3
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
cs


XML 스키마 설정이 잘못되어 있어 오류가 발생했던 것이다.

위와 같이 정의되어 있었던 이유는 프로젝트 개발 초창기에는 Tomcat6 버전을 사용했고, Tomcat7으로 옮겨가면서 XML 스키마 부분을 수정하지 않았던 것이다.

Tomcat 버전에 맞는 서블릿 스펙으로 변경해 주니 오류가 사라졌다.

1
2
3
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 
cs


톰켓 버전에 따른 servlet spec 사용 버전 맵핑 테이블은 다음 URL에서 확인할 수 있다.

http://tomcat.apache.org/whichversion.html





위의 방법으로 해결이 안 되면 다음과 같은 방법으로 해보자.

프로젝트 선택 후 우클릭 > Disable Maven Nature 선택


프로젝트 선택 후 우클릭 > Configure의 Convert to Maven Project 선택



댓글()