解决Eclipse EMF模型加载异常:uri找不到的包问题

需积分: 14 6 下载量 82 浏览量 更新于2024-11-22 收藏 54KB DOC 举报
在Eclipse开发环境中遇到一个常见的问题,即"Package with uri not found.doc",这通常发生在试图加载或显示由EMF(Eclipse Modeling Framework)生成的模型时。EMF是一种用于构建领域特定语言和模型框架的工具,它允许开发者创建可序列化、可反序列化的模型,并通过XMI(XML Metadata Interchange)进行交换。 在这个具体场景中,用户 Ronald 在尝试创建一个插件,其中涉及到两个不同的EMF模型:一个是位于`nl.company.egen.model`包下的模型,另一个是`nl.company.egen.modeldef`包下的模型。用户已经创建了一个视图,该视图旨在打开并展示第二个模型(modeldef)。然而,在运行时,用户遇到了`org.eclipse.emf.ecore.xmi.PackageNotFoundException`错误,提示找不到名为`http:///nl/company/egen/modeldef.ecore`的包。 解决这个问题的关键点包括: 1. **包路径和命名规则**: - EMF 包路径应该是相对项目路径的,而不是绝对URL。确保在`modeldef.ecore`文件的`<package>`元素中使用的URI路径与实际项目结构匹配。例如,如果这两个模型文件位于项目的`src/main/resources`下,路径应该是`modeldef.ecore`和`model.ecore`,而不是以HTTP开头的URI。 2. **包含和导出元模型**: - 用户提到已经在`build/manifest`文件中包含了两个`ecore`文件(`model.ecore`和`modeldef.ecore`),但确保这些文件在编译时被正确处理。检查`MANIFEST.MF`文件中的`Bundle-ClassPath`和`Export-Package`部分,确保`nl.company.egen.modeldef`包及其子包被正确导出。 3. **模型生成与XMI**: - 使用`xmi`标签定义的`http:///nl/company/egen/modeldef.ecore`可能是XMI文件的一个引用。确保模型已经被转换为XMI格式,并且这些XMI文件被包含在正确的目录结构中。有时候,如果模型没有经过预编译或者XMI文件没有被生成,就可能导致找不到指定的包。 4. **查看日志和错误详细信息**: - 当遇到这样的异常时,查看Eclipse的错误日志会有帮助。检查是否有关于文件路径、包名不一致或缺失的详细信息,这可能有助于定位问题所在。 5. **更新到最新版本**: - 如果使用的是EMF 2.2.0,确保已知的bug已修复,或者尝试更新到更高版本,可能会避免这类问题。 要解决这个问题,首先要确保模型文件路径的正确性,其次检查元数据和导出设置,然后排查是否所有依赖的XMI文件都存在并且正确配置。如果问题依然存在,进一步的调试可能需要查看Eclipse的日志和相关配置文件。通过这些步骤,应该能够定位并解决“Package with uri not found”这个错误。