我正在尝试使用IFML模型对html代码执行模型到文本的转换。 我有这个mtl文件:
[comment encoding = UTF-8 /]
[module main('http://www.omg.org/spec/IFML', 'http://www.omg.org/spec/IFML/core', 'http://www.omg.org/spec/IFML/ext')]
[template public generateElement(anIFMLModel : IFMLModel)]
[comment @main/]
[for (e1: InteractionFlowModelElement | anIFMLModel.interactionFlowModel.eContents())]
[if (e1.oclIsTypeOf(ViewContainer))]
[file ('/Pages/' + e1.oclAsType(ViewContainer).name + '.html', false, 'UTF-8')]
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<header>
<title>[ e1.oclAsType(ViewContainer).name /]</title>
</header>
<body>
<p>hello World</p>
</body>
</html>
[/file]
[/if]
[/for]
[/template]
如果我使用Acceleo插件运行转换,代码正常工作,但当我尝试独立运行时,我收到错误:
名为generateElement的主模板的第一个参数的类型是代理。
我在同一工作区中的另一个项目中有元模型,但我尝试将项目导出到jar并导入加速项目但没有成功。
对于独立我注册像这样的包
resourceSet.getPackageRegistry().put(ifml.core.CorePackage.eINSTANCE.getNsURI(), ifml.core.CorePackage.eINSTANCE);
resourceSet.getPackageRegistry().put(ifml.extensions.ExtensionsPackage.eINSTANCE.getNsURI(), ifml.extensions.ExtensionsPackage.eINSTANCE);
如果我将代码调试为java应用程序,它会在异常抛出时停止并检查参数类型并显示
org.eclipse.emf.ecore.impl.EClassImpl@2e554a3b (eProxyURI: http://www.omg.org/spec/IFML#/0/core/IFMLModel)
我不知道还有什么要检查。任何帮助表示赞赏