java – 加载资源时“已注册工厂需要”异常
作者:互联网
我得到以下异常:
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());
对于未找到包的问题,根据您的情况有两种可能性:
>如果您正在使用静态元模型(从您的ecore模型生成java实现),您只需访问相应的Package实例即可将其加载并注册到全局EMF包注册表中.
YourPackage packageInstance =
YourPackage.eInstance;
>如果您使用的是动态元模型(未生成Java代码),则必须手动注册.
resourceSet.getPackageRegistry().put(yourPackage.getNsURI(), yourPackage);
使用前面的代码,您必须先以编程方式从ecore模型中检索EPackage.
标签:java,eclipse-emf 来源: https://codeday.me/bug/20190614/1236613.html