我尝试使用Acceleo调用模板中的一些java代码。这里给出的代码:http://wiki.eclipse.org/Acceleo/FAQ#How_to_use_a_Java_service_in_Acceleo运行得很好,但我的代码不行,也没有发现任何错误。
下面是我的java函数:
public String test(softo.Activite activity) {
return activity.getModXName();
}和模板代码:
[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite activity)', Sequence{a}) /]
[template public createOperationUrl(activity : AccessibleActivite) ]
Result : [getTest(activity)/]
[/template]我还尝试用return 'foobar‘替换返回函数,但也不起作用。我在生成时没有任何消息:文件只包含'Result :‘。我还检查了我使用的路径和文件名。
有什么办法来解决这个问题吗?
编辑:好的!我终于找到了答案..。这真的很愚蠢:在查询代码中,您不必放入参数名称,只需放入它们的类型,因此:
[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite activity)', Sequence{a}) /]变成了:
[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite)', Sequence{a}) /]它起作用了。很高兴知道=)
发布于 2011-07-07 20:37:29
您是否导出了清单中包含Java服务的包?如果没有,请打开文件MANIFEST.MF,然后转到runtime选项卡,在那里导出包含Java类的包。如果您想确保服务被调用,您还可以尝试在Java方法中的“RuntimeException()”之前抛出一个新的返回。
发布于 2014-02-21 20:41:24
并不是真的相关,但您应该养成使用以下语法的习惯:
activity.getTest()而不是
getTest(activity)https://stackoverflow.com/questions/6610221
复制相似问题