我使用Papyrus创建了一个类图并得到了一个*.uml模型,现在我想通过编写一些Java代码来遍历*.uml元素。
我尝试了以下代码:
URI uri = URI.createURI("*.uml");
ResourceSet set = new ResourceSetImpl();
set.getPackageRegistry().put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
set.getResourceFactoryRegistry().getExtensionToFactoryMap()
.put(UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap()
.put("uml", UMLResource.Factory.INSTANCE);
set.getResourceFactoryRegistry().getExtensionToFactoryMap()
.put("xmi", new XMIResourceFactoryImpl());
//set.createResource(uri);
Resource res = set.getResource(URI.createURI(new URL("*.uml").toString(),true),true);
但我遇到了异常:
主线程中的异常:“main”java.lang.NoSuchMethodError: org.eclipse.emf.ecore.resource.URIConverter.createInputStream( Lorg/eclipse/emf/common/util/URI;Ljava/util/Map;)Ljava/io/InputStream;
我该如何使用Java加载papyrus uml模型?
if (myobj instanceof org.eclipse.uml2.uml.Class) {...}
。作为另一种选择,您还可以通过eClass()
方法检查元类:例如:if (myobj.eClass() == UMLPackage.eInstance.getClass_()) {...}
。如果您需要过滤元素,则可以使用UMLUtil.findEObject(...)
方法来操作它,该方法接受一个集合和一个过滤器(此类中还有很多其他方法)。 - Vincent Aranega