- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经使用 EMF Ecore 定义了一个自定义元模型,现在我正在编写一个 acceleo 项目来生成正确的 java 代码。
Acceleo 对于某些用例来说还不够,主要是在模型中搜索特定元素并为某些元素保存额外信息,因此我需要调用自定义 Java 服务,我按照分步示例进行操作,我相信我确切地知道如何编写查询来调用 Java 服务。
问题是,当我使用 Java 原始参数调用服务时,它运行顺利,但是当我使用元模型类型编写服务时,会出现以下错误:
org.eclipse.acceleo.engine.AcceleoEvaluationException: argument type mismatch
at org.eclipse.acceleo.engine.internal.environment.AcceleoLibraryOperationVisitor.invoke(AcceleoLibraryOperationVisitor.java:1001)
at org.eclipse.acceleo.engine.internal.environment.AcceleoLibraryOperationVisitor.callNonStandardOperation(AcceleoLibraryOperationVisitor.java:130)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitOperationCallExp(AcceleoEvaluationVisitor.java:1213)
at org.eclipse.ocl.ecore.impl.OperationCallExpImpl.accept(OperationCallExpImpl.java:390)
at org.eclipse.ocl.AbstractEvaluationVisitor.visitExpression(AbstractEvaluationVisitor.java:248)
at org.eclipse.ocl.EvaluationVisitorDecorator.visitExpression(EvaluationVisitorDecorator.java:156)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1885)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoQueryInvocation(AcceleoEvaluationVisitor.java:873)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1862)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.java:617)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1823)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.java:914)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1817)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluationVisitor.java:965)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1856)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.java:587)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1823)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoForBlock(AcceleoEvaluationVisitor.java:537)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1833)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.java:914)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1817)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluationVisitor.java:965)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1856)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoIfBlock(AcceleoEvaluationVisitor.java:587)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1823)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoFileBlock(AcceleoEvaluationVisitor.java:424)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1846)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.java:914)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1817)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplateInvocation(AcceleoEvaluationVisitor.java:965)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1856)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitAcceleoTemplate(AcceleoEvaluationVisitor.java:914)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.switchExpression(AcceleoEvaluationVisitor.java:1817)
at org.eclipse.acceleo.engine.internal.evaluation.AcceleoEvaluationVisitor.visitExpression(AcceleoEvaluationVisitor.java:1042)
at org.eclipse.ocl.internal.evaluation.QueryImpl.evaluate(QueryImpl.java:152)
at org.eclipse.ocl.ecore.QueryImpl.evaluate(QueryImpl.java:62)
at org.eclipse.acceleo.engine.generation.AcceleoEngine.doEvaluate(AcceleoEngine.java:361)
at org.eclipse.acceleo.engine.generation.AcceleoEngine.evaluate(AcceleoEngine.java:142)
at org.eclipse.acceleo.engine.service.AcceleoService.doGenerateTemplate(AcceleoService.java:869)
at org.eclipse.acceleo.engine.service.AcceleoService.doGenerate(AcceleoService.java:585)
at org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator.generate(AbstractAcceleoGenerator.java:193)
at org.eclipse.acceleo.engine.service.AbstractAcceleoGenerator.doGenerate(AbstractAcceleoGenerator.java:158)
at com.muazothman.mobile.metamodel.android_converter.Main.doGenerate(Main.java:203)
at org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoLaunchOperation.run(AcceleoLaunchOperation.java:149)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2326)
at org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginLaunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java:239)
at org.eclipse.acceleo.ide.ui.launching.strategy.AcceleoPluginLaunchingStrategy.launch(AcceleoPluginLaunchingStrategy.java:141)
at org.eclipse.acceleo.internal.ide.ui.launching.AcceleoLaunchDelegate.launch(AcceleoLaunchDelegate.java:51)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1251)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.acceleo.engine.internal.environment.AcceleoLibraryOperationVisitor.invoke(AcceleoLibraryOperationVisitor.java:993)
... 66 more
谁知道出了什么问题吗?
这是java代码:
public void f(CustomAction c){
}
这是 mtl 代码
[query public f(arg0 : CustomAction) : OclVoid
= invoke('converter.services.ActivityServices', 'f(metamodel.CustomAction)', Sequence{arg0.oclAsType(CustomAction)}) /]
最佳答案
您的服务实际上位于包converter.services中,并且生成的类CustomAction实际上位于包“metamodel”中吗?
顺便说一句,你应该打电话
[query public f(arg0 : CustomAction) : OclVoid
= invoke('converter.services.ActivityServices', 'f(metamodel.CustomAction)', Sequence{arg0}) /]
无需将其显式转换为 CustomAction,因为它是这样声明的。
关于无法使用Acceleo调用Java服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189639/
我正在尝试使用 Acceleo 生成一些代码。我正在内存中构建我的模型实体,并且我想为其生成代码。 现在,当 Acceleo 尝试将我的模型对象与模板函数的参数类型匹配时,它不匹配。这些类完全相同,但
我已经成功创建了用于 M2T 目的的 Acceleo 模块,并尝试从 Java 程序执行它。这是我尝试过的: String[] str = {"/home/hamza/workspace/HLRedu
我是 acceleo 的新手,对于文本生成(针对 java 语言),我正在使用 ecore 文件和 .mtl 模块。 在我的应用程序中需要注释,所以我在我的 ecore 模型中声明了注释。但问题是我无
在 Acceleo 中,当我编辑并保存(例如 generate.mtl)时,Acceleo 会自动生成 Generate.java 类。从这个 java 类中,我可以从外部类调用 doGenerate
这是一个简单的 MOF 模型到文本脚本: [comment encoding = UTF-8 /] [module test('http://www.eclipse.org/uml2/2.1.0/UM
我有一个基于自定义元模型的 DSL,而该元模型又基于 EMF/Ecore。我正在尝试找出选择哪种解决方案,但在任何地方都找不到任何合适的比较。 有人有任何理由让我选择其中之一吗? 目前我所知道的是Ac
这是一个简单的 MOF 模型到文本脚本: [comment encoding = UTF-8 /] [module test('http://www.eclipse.org/uml2/2.1.0/UM
我正在从两个相关的元模型开始生成代码。主要的一个引用了第二个的类。当作为 Acceleo 插件执行时,Acceleo 执行效果很好,但作为 Java 应用程序执行时则效果不佳。如果我启动Java主类,
我想知道是否可以轻松地注释 Acceleo 模板,然后在使用 TraceabilityModel 时获取这些注释。 Acceleo 现在使用注释来确定生成的入口点: [comment @main] 所
我创建了一个 Ecore 元模型并通过 EMF 生成了一个编辑器。为了生成输出代码,我在创建图表时解析资源集 (XMI),然后将这些资源映射到我自己的 Java 类。这些 Java 类负责生成我的输出
首先,我是 eclipse 建模功能的新手,所以这个问题可能是微不足道的,但我正在寻找几天并没有找到答案。 我创建了一个带有 ecore 建模项目的 ecore 元模型文件。 URI 是这样的:/co
我想在我的 Acceleo 主模板中加载 2 个不同的输入模型(一个 .bpel 和一个 .wsdl)。 我为 bpel 和 wsdl 加载了 ecore 元模型,我希望能够使用这样的东西: [com
我正在寻找有关如何使用 Ant 脚本执行 Acceleo 源生成的信息。我已经做了一些谷歌搜索,但我还没有真正找到任何直接的方法来做到这一点。我希望首先在 Eclipse 中执行此操作,但 headl
我必须将 java 函数包装在 Acceleo 文件中,有人可以帮助我吗? 谢谢 最佳答案 从 Acceleo 调用 Java 服务的最简单方法是使用用户指南(如您所知的 help.eclipse.o
我正在尝试从现有项目创建一个 Acceleo 插件,但总是会收到此错误消息: 'Export Plug-ins' has encountered a problem. /media/Data/user
我已经使用 Eclipse 创建了一个 Java 项目。在其中我创建了一个包(名为生成器),并将我的generate.mtl 文件和Generate.java 类移入其中。之后,我创建了一个 java
我是一名优秀的程序员,十分优秀!