zoukankan      html  css  js  c++  java
  • 解决Cannot change version of project facet Dynamic web module to 2.5

    我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一般现在至少都是2.5,在Project Facets里面修改Dynamic web module为2.5的时候就会出现Cannot change version of project facet Dynamic web module to 2.5,如图:

    其实在右边可以看到改到2.5需要的条件以及有冲突的facets,解决这个问题的步骤如下:

    1.把Servlet改成2.5,打开项目的web.xml,改之前:

    <!DOCTYPE web-app PUBLIC  
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
     "http://java.sun.com/dtd/web-app_2_3.dtd" >  
      
    <web-app>  
      <display-name>Archetype Created Web Application</display-name>  
    </web-app> 
    

    改后:

    <?xml version="1.0" encoding="UTF-8"?>  
    <web-app version="2.5"  
        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_2_5.xsd">  
    <display-name>Archetype Created Web Application</display-name> </web-app>

    2.修改项目的设置,在Navigator下打开项目.settings目录下的org.eclipse.jdt.core.prefs

    eclipse.preferences.version=1  
    org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled  
    org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5  
    org.eclipse.jdt.core.compiler.compliance=1.5  
    org.eclipse.jdt.core.compiler.problem.assertIdentifier=error  
    org.eclipse.jdt.core.compiler.problem.enumIdentifier=error  
    org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning  
    org.eclipse.jdt.core.compiler.source=1.5  

    把1.5改成1.6

    eclipse.preferences.version=1  
    org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled  
    org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6  
    org.eclipse.jdt.core.compiler.compliance=1.6  
    org.eclipse.jdt.core.compiler.problem.assertIdentifier=error  
    org.eclipse.jdt.core.compiler.problem.enumIdentifier=error  
    org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning  
    org.eclipse.jdt.core.compiler.source=1.6  

    打开org.eclipse.wst.common.component

    <?xml version="1.0" encoding="UTF-8"?>  
    <project-modules id="moduleCoreId" project-version="1.5.0">  
        <wb-module deploy-name="test">  
            <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>  
            <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>  
            <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>  
            <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>  
            <property name="context-root" value="test"/>  
            <property name="java-output-path" value="/test/target/classes"/>  
        </wb-module>  
    </project-modules>  

    把project-version="1.5.0"改成project-version="1.6.0"

    <?xml version="1.0" encoding="UTF-8"?>  
    <project-modules id="moduleCoreId" project-version="1.6.0">  
        <wb-module deploy-name="test">  
            <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>  
            <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>  
            <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>  
            <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>  
            <property name="context-root" value="test"/>  
            <property name="java-output-path" value="/test/target/classes"/>  
        </wb-module>  
    </project-modules> 

    打开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>  

    把<installed facet="java" version="1.5"/>改成<installed facet="java" version="1.6"/>,把  <installed facet="jst.web" version="2.3"/>改成  <installed facet="jst.web" version="2.5"/>

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

    都改好之后在打开看看,已经把Dynamic web module改成了2.5

    右键项目 > Maven > Update Project…

    这是一种解决办法,但是治标不治本,更高级的就是自定义catalog,然后安装到本地,再创建的时候啥都有了,比如把现在流行的s(struts2)sh,ssi,s(springmvc)sh 创建catalog,包括包结构,部分代码啥的都有

    原:解决Cannot change version of project facet Dynamic web module to 2.5

    在追随技术的道路上,十年如一日~
  • 相关阅读:
    toj 2819 Travel
    toj 2807 Number Sort
    zoj 2818 Prairie dogs IV
    zoj 1276 Optimal Array Multiplication Sequence
    toj 2802 Tom's Game
    toj 2798 Farey Sequence
    toj 2815 Searching Problem
    toj 2806 Replace Words
    toj 2794 Bus
    css截取字符
  • 原文地址:https://www.cnblogs.com/iamcui/p/4707399.html
Copyright © 2011-2022 走看看