我使用紙莎草紙創建了一個類圖,並且我有一個* .uml模型。現在我想通過編寫一些Java代碼來遍歷* .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);
,但我得到的例外:通過使用Java
Exception in thread "main" java.lang.NoSuchMethodError: org.eclipse.emf.ecore.resource.URIConverter.createInputStream( Lorg/eclipse/emf/common/util/URI;Ljava/util/Map;)Ljava/io/InputStream;
如何裝入紙莎草的UML模型?
謝謝你的答案,我試過你的代碼,但我得到一個異常: 線程「主」的異常java.lang.NoSuchMethodError:org.eclipse.emf.ecore.resource.URIConverter.createInputStream(Lorg/eclipse /電動勢/普通/ util的/ URI; Ljava/util的/地圖;)Ljava/IO/InputStream的; \t在org.eclipse.emf.ecore.xmi.impl.XMLHandler.getPackageForURI(XMLHandler.java:2534) \t在org.eclipse.emf.ecore.xmi.impl.XMLHandler.getFactoryForPrefix(XMLHandler.java:2422) \t at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1299) – Ahmadkt
似乎您的依賴關係存在問題,您使用的是哪種版本的EMF? –
我在我的項目中使用這些emf jar包: eclipse-emf-ecore-2.3.1.jar org.eclipse.emf.common-2.8.0.v20130125-0546.jar org.eclipse.emf。 ecore.xmi.jar org.eclipse.emf.ecore-2.8.1.v20120911-0500.jar org.eclipse.uml2.common_1.7.0.v20120913-1441.jar org.eclipse.uml2.types_1.0.0。 v20120913-1441.jar org.eclipse.uml2.uml.resources-3.1.0.v201005031530.jar org.eclipse.uml2.uml_4.0.1.v20120913-1441.jar 感謝您的幫助.. – Ahmadkt