2

この件に関していくつかのQnAがあることを私は知っています。私は多くの解決策を試しましたが、常に同じエラーが発生します。

私のコード構造は次のようなものです:

Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
    Map<String, Object> m = reg.getExtensionToFactoryMap();
    m.put("xmi", new XMIResourceFactoryImpl());

    ResourceSet resSet = new ResourceSetImpl();
    Resource resource = resSet.getResource(URI.createURI("model/List.xmi"), true);
    resource.load(Collections.EMPTY_MAP);
    EObject root = resource.getContents().get(0);

エラー:

スレッド「メイン」での例外 org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: org.eclipse.emf.ecore.xmi.PackageNotFoundException: uri 'List' を持つパッケージが見つかりません。(file:///C:/Users/2/My%20Repository/UNIT%20Research%20and%20Development/com.unitbilisim.research.transformation/model/List.xmi, 6, 40) org.eclipse.emf. org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278) の org.eclipse.emf.ecore.resource の ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319)。 impl.ResourceSetImpl.getResource(ResourceSetImpl.java:406) com.unitbilisim.research.transformation.ConvertEcore2Graph.main(ConvertEcore2Graph.java:61) の原因: org.eclipse.emf.ecore.xmi.PackageNotFoundException: パッケージに uri ' リスト」が見つかりません。(file:///C:/Users/2/My%20Repository/UNIT%20Research%20and%20Development/com.unitbilisim.research.transformation/model/List.xmi, 6, 40) org.eclipse.emf. org.eclipse.emf.ecore.xmi.impl.XMLHandler.getFactoryForPrefix(XMLHandler.java:2458) の org.eclipse.emf.ecore.xmi の ecore.xmi.impl.XMLHandler.getPackageForURI(XMLHandler.java:2625)。 org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1504) の impl.XMLHandler.createObjectByType(XMLHandler.java:1335) org.eclipse.emf.ecore.xmi.impl.XMLHandler. org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:77) の processElement(XMLHandler.java:1026) org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler. java:1008) org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:

「uri のパッケージ」「見つかりません」とはどういう意味ですか? xmi ファイルを直接読み取ることはできますか、それとも xml ファイルとして解析する必要がありますか?

私もこれを試しました - > https://stackoverflow.com/a/4615965/1604503

    XMIResource resource = new XMIResourceImpl(URI.createURI("model/List.xmi"));
    resource.load(null);
    System.out.println( resource.getContents().get(0) );

PackageNotFoundEx. およびリソース$ IOWrappedEx。また :(

助けてください

敬具

4

2 に答える 2

1

その理由は、モデル コードを生成しなかったためです。そのため、'List' パッケージが見つかりませんでした。それをpackageRegistryに追加しました。それだけです。

        ResourceSet resourceSet = new ResourceSetImpl();

        // register UML
        Map packageRegistry = resourceSet.getPackageRegistry();
        packageRegistry.put(list.ListPackage.eNS_URI, list.ListPackage.eINSTANCE);

        // Register XML resource as UMLResource.Factory.Instance
        Map extensionFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
        extensionFactoryMap.put("xmi", new XMIResourceFactoryImpl());

        Resource resource = (Resource) resourceSet.createResource(uri);


        // try to load the file into resource
        resource.load(null);
于 2014-11-17T12:20:25.613 に答える