2017-04-26 25 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)