首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Acceleo调用Java代码

用Acceleo调用Java代码
EN

Stack Overflow用户
提问于 2011-07-07 19:58:31
回答 2查看 2K关注 0票数 0

我尝试使用Acceleo调用模板中的一些java代码。这里给出的代码:http://wiki.eclipse.org/Acceleo/FAQ#How_to_use_a_Java_service_in_Acceleo运行得很好,但我的代码不行,也没有发现任何错误。

下面是我的java函数:

代码语言:javascript
复制
public String test(softo.Activite activity) {
     return activity.getModXName();
}

和模板代码:

代码语言:javascript
复制
[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 :‘。我还检查了我使用的路径和文件名。

有什么办法来解决这个问题吗?

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

代码语言:javascript
复制
[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite activity)', Sequence{a}) /]

变成了:

代码语言:javascript
复制
[query public getTest(a : Activite) : String = invoke('org.eclipse.acceleo.softogen.files.Utility','test(softo.Activite)', Sequence{a}) /]

它起作用了。很高兴知道=)

EN

回答 2

Stack Overflow用户

发布于 2011-07-07 20:37:29

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

票数 0
EN

Stack Overflow用户

发布于 2014-02-21 20:41:24

并不是真的相关,但您应该养成使用以下语法的习惯:

代码语言:javascript
复制
activity.getTest()

而不是

代码语言:javascript
复制
getTest(activity)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6610221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档