加载资源时出现“需要注册工厂”异常

2024-01-05

我得到以下异常:

 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 http://wiki.eclipse.org/EMF-FAQ#How_do_I_use_EMF_in_standalone_applications_.28such_as_an_ordinary_main.29.3F

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

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

您的包包实例= YourPackage.eInstance;

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加载资源时出现“需要注册工厂”异常 的相关文章

随机推荐