Eclipse FeatureNotFoundException

问题描述 投票:21回答:11

我用maven构建了我的项目所有构建成功并且eclipse属性生成也是成功的

但是当我在Eclipse 4中打开项目时,我收到了这个错误

An internal error occurred during: "Loading descriptor for SALYExplorer.".
org.eclipse.emf.ecore.xmi.FeatureNotFoundException: Feature 'taglib' not found. (platform:/resource/SALYExplorer/src/main/webapp/WEB-INF/web.xml, 313, 10)

在那个地方我有一些属性

虽然项目运行顺利,一切都很好,但只是在导航窗格中探索项目时,Eclipse总是抛出这个错误框(非常烦人)。

在该位置的COED

<taglib>
    <taglib-uri>xx.tld</taglib-uri>
    <taglib-location>/WEB-INF/tld/xx.tld</taglib-location>
</taglib>

和文件中的xx定义

<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
     "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_2.dtd">
<taglib>

  <tlib-version>1.0</tlib-version>
  <jsp-version>1.2</jsp-version>
.........
</taglib>
eclipse web.xml
11个回答
26
投票

问题根本不是taglib,它只是Eclipse的错误描述。

这是项目facet与web.xml dtd ..他们的版本必须匹配!

如果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">

但该项目有一个

 "Dynamic Web Module 2.5"

然后会出现这个错误..将facet改为2.3或web.xml改为2.5 ...换句话说:它们必须匹配..


0
投票

就我而言,使用该版本解决了这个问题

org.eclipse.emf.ecore.xmi_2.10.2.v20150123-0348org.eclipse.emf.ecore.xmi.source_2.10.2.v20150123-0348org.eclipse.emf.ecore.xmi_2.10.2.v20150123-0348org.eclipse.emf.ecore.xmi.source_2.10.2.v20150123-0348org.eclipse.emf.common_2.10.1.v20150123-0348

在构建路径中的jar。尽管存在新版本,早期的旧版罐子仍在使用。


0
投票

右键单击Eclipse中的项目 - >构建路径 - >配置构建路径 - >项目构面 - >取消选中动态Web模块

注意:只要您不打算通过嵌入式应用服务器从eclipse中运行Web应用程序,这种方法就很好。


6
投票

我在尝试更新Eclipse中的maven项目时遇到了这个错误(ALT + F5)。

网嗯

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

和项目方面

Dynamic Web Modul 3.0

以下是我可以解决的问题:

web-app元素中删除所有xml-schema定义

<web-app>

然后更新maven项目(ALT + F5)。

重新插入架构定义并重新更新项目(ALT + F5)。


3
投票

根据web-app_2_5.xsd中包含的jsp_2_1.xsd,taglib标记应该位于jsp-config标记中:

<xsd:complexType name="jsp-configType">
<xsd:annotation>
  <xsd:documentation>

The jsp-configType is used to provide global configuration
information for the JSP files in a web application. It has
two subelements, taglib and jsp-property-group.

  </xsd:documentation>
</xsd:annotation>

<xsd:sequence>
  <xsd:element name="taglib"
       type="javaee:taglibType"
       minOccurs="0"
       maxOccurs="unbounded"/>
  <xsd:element name="jsp-property-group"
       type="javaee:jsp-property-groupType"
       minOccurs="0"
       maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID"/>

当我在js-config中包装taglib时,错误消失了。

<jsp-config>
    <taglib>
        <taglib-uri>http://www.springframework.org/tags/form</taglib-uri>
        <taglib-location>/WEB-INF/taglibs/spring-form.tld</taglib-location>
    </taglib>
</jsp-config>

以前的解析器可能更宽松。我的配置:Eclipse Luna,内置maven 3.2.1,web.xml 2.5,Dynamic Web Project facet 2.5。


0
投票

我刚刚得到了相同的症状,使用maven的web-app项目。在我的例子中,与web.xml中的struts taglib标签有关,并且该项目具有struts v1.2.9依赖性。我通过切换到struts v1.3.10解决了这个问题。不要问为什么这解决了这个问题。

如果您处于相同的情况并且将struts依赖关系从1.2.9升级到1.3.10,请确保在web.xml的DOCTYPE声明中至少使用dtd v2.3:

!DOCTYPE web-app PUBLIC“ - // Sun Microsystems,Inc.//DDD Web Application 2.3 // EN”“http://java.sun.com/j2ee/dtds/web-app_2_3.dtd”

或者你会遇到另一个问题(如果没有互联网连接,你的webapp将无法启动)

希望这可以帮助


0
投票

我怀疑问题出在Eclipse Web Tools Platform和Java EMF Model上。这是一个插件列表的图像,包括来自Eclipse Web Tools Platform的Java EMF Model和JEM内容:

https://stackoverflow.com/users/1503535/nitin-gurram,你的堆栈跟踪看起来像这样吗?

!ENTRY org.eclipse.core.jobs 4 2 2012-09-28 12:10:00.554
!MESSAGE An internal error occurred during: "Loading descriptor for grch97.".
!STACK 0
org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: org.eclipse.emf.ecore.xmi.FeatureNotFoundException: Feature 'taglib' not found. (platform:/resource/grch97/WEB-INF/web.xml, 891, 11)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278)
    at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.getResource(ProjectResourceSetImpl.java:1003)
    at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelResource(JEE5ModelProvider.java:169)
    at org.eclipse.jst.jee.model.internal.Web25ModelProvider.getModelObject(Web25ModelProvider.java:44)
    at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelObject(JEE5ModelProvider.java:215)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.loadProviders(AbstractMergedModelProvider.java:261)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.access$2(AbstractMergedModelProvider.java:255)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider$LoadModelsWorkspaceRunnable.run(AbstractMergedModelProvider.java:278)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.loadModel(AbstractMergedModelProvider.java:249)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.getMergedModel(AbstractMergedModelProvider.java:219)
    at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider.getModelObject(AbstractMergedModelProvider.java:139)
    at org.eclipse.jst.jee.ui.internal.navigator.Web25ContentProvider.getNewContentProviderInstance(Web25ContentProvider.java:69)
    at org.eclipse.jst.jee.ui.internal.navigator.LoadingJeeDDJob.run(LoadingJeeDDJob.java:50)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.eclipse.emf.ecore.xmi.FeatureNotFoundException: Feature 'taglib' not found. (platform:/resource/grch97/WEB-INF/web.xml, 891, 11)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.reportUnknownFeature(XMLHandler.java:1985)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleUnknownFeature(XMLHandler.java:1949)
    at org.eclipse.emf.ecore.xmi.impl.XMIHandler.handleUnknownFeature(XMIHandler.java:145)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleFeature(XMLHandler.java:1893)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:1017)
    at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:81)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:995)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:706)
    at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:163)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at javax.xml.parsers.SAXParser.parse(Unknown Source)
    at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:175)
    at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:240)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1505)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1284)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
    at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.demandLoad(ProjectResourceSetImpl.java:811)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
... 14 more

0
投票

我设法通过从每个有问题的项目的.project文件中删除验证器来解决这个问题。


0
投票

目前,如果它只是您想要解决的烦人错误消息,那么作为短期修复,请看一下禁用验证:Eclipse 'loading descriptor' takes ages

如果上述方法不起作用,另一种方法是使用AHK(Autohotkey),这将在您的最后需要更多的工作。 (我已经使用AHK脚本几年了,以摆脱我不关心的Eclipse Error弹出窗口)

Eclipse Bug 198630差不多5年后被提出,并且有a comment,它与OP有几乎相同的错误信息。 (错误本身最终被关闭,因为不可重现)。

我有以下问题:

  1. 您是否可以向我们显示错误日志? (要获取错误日志,您可以查看错误日志视图或查看实际文件:WORKSPACE_HOME/.metadata/.log。有关更多详细信息,请查看this。)
  2. 您使用的是WebLogic或Glassfish等任何特定的服务器适配器吗?

我有以下建议:

  1. 在eclipse bug线程中,问题was fixed至少一次通过更新到特定的JST版本。因此,您是否可以运行Eclipse更新并查看问题是否已解决? (这可以通过转到帮助 - >检查更新来完成)
  2. 是否可以尝试在Eclipse Indigo中导入项目(而不是您目前拥有的Juno)并查看是否可以重现问题? (Eclipse Indigo下载可用here,我相信你需要Java EE version

0
投票

我有一个类似的错误使用eclipse 4.3(Kepler),maven 3.1.0,tomcat 6.0.37和jdk7(也安装了jre6),并找到了解决方案来修复它或者至少通过配置tomcat来摆脱繁琐的错误在日食。

在Preferences-> Server-> Runtime Environments中,定义新的运行时环境“Apache Tomcat 6.0”并从已安装的JRE中选择jre6安装。

然后查看项目属性中的Targeted Runtimes。 Apache Tomcat v6.0应与Java Runtime Environment v1.6相关联(如果尚未定义,请按new并检查所选JRE是否为java 1.6运行时)。

希望能帮助到你


0
投票

我能够将项目Java facet更新为1.5并且错误已停止。

© www.soinside.com 2019 - 2024. All rights reserved.