2014-09-16 2 views
4

나는 EMF에 새로 온 다음과 같은 EMF 모델을 저장하려고 : -저장은 EMF 모델

public void saveData(File file, Device device) throws IOException { 

     final ResourceSet resourceSet = new ResourceSetImpl(); 

     // Use XMI resource 
     System.out.println("file path in saveData " +file.getPath());   
     Resource xmiResource = resourceSet.createResource(URI.createFileURI(file.getPath() + ".xmi")); 
     xmiResource.getContents().add(device); 
     xmiResource.save(null); 

     // Use XML resource instead 
     Resource xmlResource = resourceSet.createResource(URI.createFileURI(file.getPath() + ".xml")); 
     xmlResource.getContents().add(device); 
     xmlResource.save(null); 

     } 

그러나 어떤 파일이 지정된 경로에 만들어지지 않습니다. 로드에 대한 코드는 다음과 같습니다 -

다음과 같은 오류 제공
public Device loadData(String fileName) { 


     final ResourceSet resourceSet = new ResourceSetImpl(); 


      // Use XMI resource 

      Resource xmiResource; 
      System.out.println("filename" + fileName); 
      try { 
      xmiResource = resourceSet.getResource(URI.createFileURI(fileName + ".xmi"),true); 

       xmiResource.load(null); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       return null; 
      } 
      return (Device)xmiResource.getContents().get(0); 

     } 

: java.lang.RuntimeException가이 :에 대한 리소스를 만들 수 없습니다 '파일 :/C : /Users/Desktop/filename.xmi를'; 등록 된 리소스 팩토리가 필요합니다.

+1

저장을위한

XMIResourceImpl resource = new XMIResourceImpl(); File source = new File(fileName); resource.load(new FileInputStream(source), new HashMap<Object,Object>()); Data data = (Data)resource.getContents().get(0); 

/forums/index.php/mv/msg/123514/377407/#msg_377407). 같은 문제가있는 다른 사람들을 도울 수 있다면 자신의 질문에 답을 쓰고 시도해 볼 수 있습니다. –

답변

7

사용 된 XMiResourceImpl.It은 현재 잘 작동합니다. [이클립스 포럼 : 생성 된 편집기 외부에서 "등록 된 자원 팩토리가 필요하다"] (https://www.eclipse.org이 문제 같은 소리 모델

Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE; 
Map<String, Object> m = reg.getExtensionToFactoryMap(); 
m.put("key", new XMIResourceFactoryImpl()); 
ResourceSet resSet = new ResourceSetImpl(); 
Resource resource = resSet.createResource(URI.createFileURI(fileName)); 
resource.getContents().add(data); 
resource.save(Collections.EMPTY_MAP);