自动提示
Eclipse中集成一些框架或项目的dtd文件,所以配置这些框架或项目配置文件的时,会得到提示。但对于其他的一些框架或项目,或是上文中说的集成的,但版本不同,导致不能得到自动提示。这是我们就需要手动进行配置。下面以 为 log4j的配置文件添加自动提示 为例。
方法1. 配置log4j.dtd文件: Windows -> Preferences -> XML -> XML Catalog 点击 Add.. 添加一个XML Catalog Entry
在弹出的窗口如下配置:
Location: jar:file:F:/software/sts-2.3.3.M2/plugins/org.apache.log4j_1.2.13.v200903072027.jar!/org/apache/log4j/xml/log4j.dtd
Key Type: Public ID
Key: -//LOGGER
注意:Location中的log4j.dtd文件的位置使用的是我本机STS的plugins里自带的log4jxxx.jar中的的文件,所以URI的前缀是 jar:file:
此处也可以改成系统文件的位置,如 F:\software\sts-2.3.3.M2\plugins\log4j.dtd 只要这个log4j.dtd文件存在就行了。
然后将log4j.xml中的DOCTYPE声明修改为:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
</log4j:configuration>
重新编译项目就可以了。
方法2.直接将log4j.dtd文件拷贝到与log4j.xml文件的同级目录下即可,但这样做每个用到log4j.xml的地方都要拷贝一次。
这种方法下DOCTYPE不用更改。
如下面两张截图:
其他xml配置文件类似。
为什么需要配置xml中引用的dtd文件,那是因为XML由DTD或XSD文件来定义的。简单的理解,配置dtd文件目的在于:让Eclipse知道配置该dtd文件的xml的语法,这样用户在编辑该文件时,才能得到提示。
Web.xml文件报错(文件格式不对)
报错内容如下:The content of element type “filter” must match “(icon?,filter-name,display-name?,description?,filter-class,init-param*)”.
解决方案: xml文件出现这种提示,说明filter节点中出现了一些不符合规范的子节点,检查被注掉即可。如下图:
同时注意到错误提示信息中,出现了一些通配符,其中? 表示 0 或 1 个,* 表示 0 或多个。未加通配符,说明这个子节点必须要声明。
pom.xml文件报错(Web.xml is missing)
错误:Web.xml is missing and <failOnMissingWebXml> is set to true
原因:maven看到pom.xml是 packaging 是 war的形式,它默认认为不能缺少web.xml
解决方案一:直接新建一个空的 web.xml 即可。
解决方案二:如果你的项目中确实不需要web.xml,同时你也不能忍受一个空的web.xml文件在你的项目中,可以在pom文件配置插件。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration
</plugin>
</plugins>
</build>