Acceleo-Java应用程序的交叉模型参考
我从两个相关的元模型开始生成代码。主类引用了第二类的类。当作为Acceleo插件执行时,Acceleo执行效果很好,但当作为Java应用程序执行时,Acceleo执行效果不佳。如果启动Java主类,则第二个相关元模型的数据不可见 我得到的错误是Acceleo-Java应用程序的交叉模型参考,java,acceleo,Java,Acceleo,我从两个相关的元模型开始生成代码。主类引用了第二类的类。当作为Acceleo插件执行时,Acceleo执行效果很好,但当作为Java应用程序执行时,Acceleo执行效果不佳。如果启动Java主类,则第二个相关元模型的数据不可见 我得到的错误是 org.eclipse.acceleo.engine.AcceleoEvaluationException: Unresolved compilation error in generation module 我向您展示了调试模式的一个片段。目标是对第
org.eclipse.acceleo.engine.AcceleoEvaluationException: Unresolved compilation error in generation module
我向您展示了调试模式的一个片段。目标是对第二个元模型类(名为peersbehavior)的引用
----URI是正确的,它指向确切的位置----
----但无法检索值----
我在ATL Model2Model转换中遇到了类似的问题:必须选中“允许模型间引用”选项。但在Acceleo我没有发现任何类似的东西
[编辑]
正如他所指出的
我在Java类中添加了这两行代码
public void registerResourceFactories(ResourceSet resourceSet)
{
super.registerResourceFactories(resourceSet);
// code added by me
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("systembehavior", new XMIResourceFactoryImpl());
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("peerbehavior", new XMIResourceFactoryImpl());
}
现在它也可以启动Java类,但是如果我将项目导出为Jar,并尝试在另一个项目中使用它,我会遇到与以前相同的问题,添加此代码后我解决了此问题(如问题的[EDIT]部分所述) 和在src dir中手动添加.emtl编译文件(否则它们将不会插入.jar) 通过这些修改,如果作为Java应用程序执行,代码生成就可以工作。作为Acceleo应用程序运行转换不起作用
public void registerResourceFactories(ResourceSet resourceSet)
{
super.registerResourceFactories(resourceSet);
// code added by me
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("systembehavior", new XMIResourceFactoryImpl());
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("peerbehavior", new XMIResourceFactoryImpl());
}