1

次のように、特定の ecore メタモデルに準拠する 2 つのモデルを比較したいと思います。

public void compare() {

    URI uri1 = URI.createFileURI("file1.xmi");
    URI uri2 = URI.createFileURI("file2.xmi");

    Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl());

    ResourceSet resourceSet1 = new ResourceSetImpl();
    ResourceSet resourceSet2 = new ResourceSetImpl();

    resourceSet1.getResource(uri1, true);
    resourceSet2.getResource(uri2, true);

    IComparisonScope scope = new DefaultComparisonScope(resourceSet1, resourceSet2, null);
    Comparison comparison = EMFCompare.builder().build().compare(scope);

    List<Diff> differences = comparison.getDifferences();
    // Let's merge every single diff
    IMerger.Registry mergerRegistry = new IMerger.RegistryImpl();
    IBatchMerger merger = new BatchMerger(mergerRegistry);
    merger.copyAllLeftToRight(differences, new BasicMonitor());
}

このコードを実行するPackage with uri '/uri/of/the/package' not foundと、メタモデルの URI であるエラーが発生します。右クリック→ でecoreモデルを登録しようとしたのですが、うまくいきRegister EPackagesません。何が間違っているのですか?`パッケージを登録するにはどうすればよいですか (私は静的を好みますが、動的にも機能します)。

4

3 に答える 3