0

我尝试使用 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' 替换返回函数,但它也不起作用。生成时我没有任何消息:该文件仅包含“结果:”。我还检查了我使用的路径和文件名。

有什么想法可以解决这个问题吗?

编辑:好的!我终于找到了答案......这真的很愚蠢:在查询代码中您不必输入参数名称,只需输入它们的类型,所以:

[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}) /]

它有效......很高兴知道=)

4

2 回答 2

0

不是很相关,但你应该养成使用这种语法的习惯:

activity.getTest()

代替

getTest(activity)
于 2014-02-21T12:41:24.230 回答
0

您是否在清单中导出了包含 Java 服务的包?如果没有,请打开文件 MANIFEST.MF,然后转到运行时选项卡,然后导出包含 Java 类的包。RuntimeException()如果您想确保调用该服务,您还可以尝试在 Java 方法的“返回”之前抛出一个新的。

于 2011-07-07T12:37:29.350 回答