2017-04-26 9 views
0

java-app에서 프로그래밍 방식으로 ATL/EMFTVM 변환을 시작하려고합니다. 모듈 로딩 (execEnv.loadModule (mr, "moduleName")) 시점에서 모듈로드 중 오류를보고하는 예외가 발생합니다. 메타 모델 입력을 찾을 수 없습니다. 코드의emftvm 모듈로드 중 오류 : 메타 모델 입력을 찾을 수 없습니다.

조각 :

ModuleResolver mr = new DefaultModuleResolver(transformationDir, resourceSet); 
TimingData td = new TimingData(); 
execEnv.loadModule(mr, "moduleName"); 
td.finishLoading(); 
env.run(td); 
td.finish(); 

이 예외 :

Exception in thread "main" org.eclipse.m2m.atl.emftvm.util.VMException: Error during module loading: Metamodel input not found 
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.loadModule(ExecEnvImpl.java:1265) 
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.loadModule(ExecEnvImpl.java:1217) 
at ATLLauncher.launch(ATLLauncher.java:102) 
at ServiceRunner.main(ServiceRunner.java:65) 
Caused by: java.lang.IllegalArgumentException: Metamodel input not found 
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.findType(ExecEnvImpl.java:2061) 
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.findEClassifier(ExecEnvImpl.java:2141) 
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.registerFeature(ExecEnvImpl.java:1316) 
at org.eclipse.m2m.atl.emftvm.impl.ExecEnvImpl.loadModule(ExecEnvImpl.java:1242) 

사람이 좀 도와 주 시겠어요?

답변

0

ExecEnv 인스턴스에 메타 모델을 등록 했습니까? 당신은 loadModule 호출하기 전에 이와 같은 코드의 조각을 가져야한다 :이 예 OUT_METAMODEL_NAME에서

Metamodel inMetamodel = EmftvmFactory.eINSTANCE.createMetamodel(); 
inMetamodel.setResource(rs.getResource(URI.createURI(inputMetamodelNsURI), true)); 
env.registerMetaModel(IN_METAMODEL_NAME, inMetamodel); 

Metamodel outMetamodel = EmftvmFactory.eINSTANCE.createMetamodel(); 
outMetamodel.setResource(rs.getResource(URI.createURI(outputMetamodelNsURI), true)); 
env.registerMetaModel(OUT_METAMODEL_NAME, outMetamodel); 

IN_METAMODEL_NAME 당신이 ATL 변환에 메타 모델에 제공되는 이름입니다.

This example GitHub에서 찾은 것 또한 도움이 될 수 있습니다. (@ 구아란트 크레딧)