2017-04-26 55 views
0

我嘗試從java-app以編程方式啓動ATL/EMFTVM轉換。在模塊加載時(execEnv.loadModule(mr,「moduleName」)),模塊加載期間發生異常報告錯誤:找不到元模型輸入。emftvm模塊加載期間出錯:未找到元模型輸入

一段代碼:

​​

例外:

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

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

在這個例子中OUT_METAMODEL_NAMEIN_METAMODEL_NAME是您的ATL改造你的元模型所提供的名稱。

This example我在GitHub上找到的可能也有幫助(信貸給@guana)