You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ecore EMF加载XMI报PackageNotFoundException找不到Animals.ecore如何解决

EMF包未找到报错解决方案

以下方案按操作复杂度从低到高排序,优先尝试方案1:

方案1:Eclipse插件配置自动注册(适配Eclipse插件开发场景)

  • 打开当前项目的plugin.xml,切换至Dependencies标签页,点击Add按钮,搜索包含Animals.ecore的插件项目,添加为当前项目的依赖
  • 若你仅持有单独的Animals.ecore文件,无对应插件项目,可将Animals.ecore放入当前项目的model/目录下,再切换到plugin.xml的Extensions标签页,添加org.eclipse.emf.ecore.generated_package扩展点,填写两个字段:
    • uri字段填报错提示中找不到的URI:platform:/plugin/Animals/model/Animals.ecore
    • class字段如果有自动生成的包Java类就填全类名,没有直接填ecore文件相对路径model/Animals.ecore即可
  • 重启Eclipse应用运行配置,勾选所有关联插件后即可生效

方案2:代码手动注册(通用所有运行场景)

在加载xmi文件的代码执行前,手动将Animals.ecore注册到EMF全局包注册表,示例代码如下:

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;

// 注册Ecore文件解析工厂
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl());

// 加载本地Animals.ecore文件,替换为你实际的文件路径
Resource ecoreResource = new ResourceSetImpl().getResource(URI.createFileURI("C:/你的本地路径/Animals.ecore"), true);
EPackage animalsPackage = (EPackage) ecoreResource.getContents().get(0);

// 将包注册到全局注册表,key为报错中缺失的URI
EPackage.Registry.INSTANCE.put("platform:/plugin/Animals/model/Animals.ecore", animalsPackage);
  • 注册完成后再执行xmi加载逻辑即可正常识别模型包

方案3:VM参数URI映射(适配临时测试场景)

仅需要临时测试不想修改代码或配置的场景,可在Eclipse启动配置的Arguments标签页,VM参数栏添加以下配置:

-DEMF_URI_MAP=platform:/plugin/Animals/model/Animals.ecore=file:/C:/你的本地路径/Animals.ecore

EMF运行时会自动完成URI映射,直接读取你本地的ecore文件。


内容的提问来源于stack exchange,提问作者llTtoOmMll

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 23:27:05