gpt4 book ai didi

java - "Registered factory needed"加载资源时出现异常

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:01 24 4
gpt4 key购买 nike

我得到以下异常:

 java.lang.RuntimeException: Cannot create a resource for 'file:/home/my_conf.xml'; a registered resource factory is needed

“爆”的代码是这样的,停在:resource = resourceSet.....

    ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = null;

File f = new File(filename);
URI uri = URI.createFileURI(f.getAbsolutePath());

if (!f.exists()) {
throw new Exception(filename + " does not exist");

} else {
resource = resourceSet.getResource(uri, true);
mapPrepConfiguration = (MapPrepConfiguration) resource.getContents().get(0);
}

有人知道吗?

最佳答案

如果您以独立模式运行,则必须手动将工厂注册到您的资源集工厂注册表。
在创建资源集实例后添加以下行:

resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml", new XMLResourceFactoryImpl());

请参阅http://wiki.eclipse.org/EMF-FAQ#How_do_I_use_EMF_in_standalone_applications_.28such_as_an_ordinary_main.29.3F

对于找不到包的问题,​​根据您的情况有两种可能性:

  • 如果您使用的是静态元模型(java 实现是从您的 ecore 模型生成的),您只需访问相应的 Package 实例即可将其加载并注册到全局 EMF 包注册表中。

YourPackage packageInstance = YourPackage.eInstance;

  • 如果您使用的是动态元模型(未生成 Java 代码),则必须手动注册。
resourceSet.getPackageRegistry().put(yourPackage.getNsURI(), yourPackage);

使用前面的代码,您必须事先以编程方式从您的 ecore 模型中检索 EPackage。

关于java - "Registered factory needed"加载资源时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6571638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com