2014-11-15 2 views
1

이 주제에 대한 여러 QnA가 있음을 알고 있습니다. 나는 많은 해결책을 시도했다, 나는 항상 동일한 오류를 얻고있다.XMI 파일에서 EMF 모델 인스턴스로드

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); 

오류 :

Exception in thread "main" org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: org.eclipse.emf.ecore.xmi.PackageNotFoundException: Package with uri 'List' not found. (file:///C:/Users/2/My%20Repository/UNIT%20Research%20and%20Development/com.unitbilisim.research.transformation/model/List.xmi, 6, 40) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:406) at com.unitbilisim.research.transformation.ConvertEcore2Graph.main(ConvertEcore2Graph.java:61) Caused by: org.eclipse.emf.ecore.xmi.PackageNotFoundException: Package with uri 'List' not found. (file:///C:/Users/2/My%20Repository/UNIT%20Research%20and%20Development/com.unitbilisim.research.transformation/model/List.xmi, 6, 40) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.getPackageForURI(XMLHandler.java:2625) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.getFactoryForPrefix(XMLHandler.java:2458) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createObjectByType(XMLHandler.java:1335) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.createTopObject(XMLHandler.java:1504) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.processElement(XMLHandler.java:1026) at org.eclipse.emf.ecore.xmi.impl.XMIHandler.processElement(XMIHandler.java:77) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:1008) at org.eclipse.emf.ecore.xmi.impl.XMLHandler.startElement(XMLHandler.java:719) at org.eclipse.emf.ecore.xmi.impl.XMIHandler.startElement(XMIHandler.java:163) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source) at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:175) at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:261) at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518) at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1297) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259) at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274) ... 2 more

' "을 (를) 찾을 수 없습니다 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를 기원하십시오. 다시 나는 그 때문에. 모델의 코드를 생성하지 않았다

종류

답변

1

이유가 있었다 안부 도와주세요 :('목록'패키지는 내가에 추가 않았다. 찾을 수 없습니다 내 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); 
관련 문제