首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决错误Mwe2Launcher:无法找到名称的EClass

如何解决错误Mwe2Launcher:无法找到名称的EClass
EN

Stack Overflow用户
提问于 2012-02-10 16:48:51
回答 2查看 2.2K关注 0票数 4

我创建了一个Xpand生成器。在它的src/文件夹中,我定义了我的模型My.nn、模板和工作流。

这就是我的workflow.mwe2文件的样子:

代码语言:javascript
复制
module workflow.NeuralNetworksGenerator

import org.eclipse.emf.mwe.utils.*

var targetDir = "src-gen"
var fileEncoding = "Cp1252"
var modelPath = "src/model"

Workflow {
    component = org.eclipse.xtext.mwe.Reader {
        // lookup all resources on the classpath
        //useJavaClassPath = true

        // or define search scope explicitly
        path = modelPath

        // this class will be generated by the xtext generator 
        register = org.xtext.example.neuralnetworks.NeuralNetworksStandaloneSetup {}
        load = {
            slot = "systems"
            type = "System"
        }
    }

    component = org.eclipse.xpand2.Generator {
        expand = "templates::Template::main FOREACH systems"
        outlet = {
            path = targetDir
        }
        fileEncoding = fileEncoding
    }
}

当我试图以workflow.mwe2工作流的形式运行这个MWE2文件时,我会得到以下错误:

代码语言:javascript
复制
0    INFO  AbstractExpressionsUsingWorkflowComponent - No meta models configured, using JavaBeans as default.
75   ERROR Mwe2Launcher       - Problems running workflow workflow.NeuralNetworksGenerator: Couldn't find EClass for name 'System'.
java.lang.RuntimeException: Problems running workflow workflow.NeuralNetworksGenerator: Couldn't find EClass for name 'System'.
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:99)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:73)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:64)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:55)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.run(Mwe2Launcher.java:74)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher.main(Mwe2Launcher.java:35)
Caused by: org.eclipse.emf.mwe.core.WorkflowInterruptedException: Couldn't find EClass for name 'System'.
    at org.eclipse.xtext.mwe.SlotEntry.findEClasses(SlotEntry.java:135)
    at org.eclipse.xtext.mwe.SlotEntry.put(SlotEntry.java:91)
    at org.eclipse.xtext.mwe.AbstractReader.addModelElementsToContext(AbstractReader.java:95)
    at org.eclipse.xtext.mwe.Reader.invokeInternal(Reader.java:166)
    at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:126)
    at org.eclipse.emf.mwe.core.lib.Mwe2Bridge.invoke(Mwe2Bridge.java:34)
    at org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent.invoke(AbstractWorkflowComponent.java:201)
    at org.eclipse.emf.mwe2.runtime.workflow.AbstractCompositeWorkflowComponent.invoke(AbstractCompositeWorkflowComponent.java:35)
    at org.eclipse.emf.mwe2.runtime.workflow.Workflow.run(Workflow.java:19)
    at org.eclipse.emf.mwe2.launch.runtime.Mwe2Runner.run(Mwe2Runner.java:97)
    ... 5 more

用于创建特定工作流mwe2文件的示例取自Xpand参考手册。

这是来自MANIFEST.MF文件的插件依赖项列表:

代码语言:javascript
复制
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: my.neuralnetworks.generator.project
Bundle-SymbolicName: my.neuralnetworks.generator.project; singleton:=true
Bundle-Version: 1.0.0
Require-Bundle: org.eclipse.jdt.core;bundle-version="3.5.0",
 org.eclipse.xtend.profiler;resolution:=optional,
 org.apache.commons.logging,
 org.apache.log4j;resolution:=optional,
 com.ibm.icu;bundle-version="4.0.1",
 org.antlr.runtime;bundle-version="3.0.0",
 org.eclipse.core.runtime;bundle-version="3.5.0",
 org.eclipse.emf.mwe.utils;bundle-version="0.7.0",
 org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
 org.eclipse.jface.text;bundle-version="3.5.0",
 org.eclipse.xpand;bundle-version="0.7.0",
 org.eclipse.xtend;bundle-version="0.7.0",
 org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
 org.eclipse.xtend.backend;bundle-version="1.0.0";resolution:=optional,
 org.eclipse.xtend.middleend.xpand;bundle-version="1.0.0";resolution:=optional,
 org.eclipse.xtend.middleend.xtend;bundle-version="1.0.0";resolution:=optional,
 neuralnetworks;bundle-version="1.0.0",
 org.xtext.example.neuralnetworks;bundle-version="1.0.0",
 org.eclipse.emf.ecore.xmi.source;bundle-version="2.7.0",
 org.eclipse.jface.text.source;bundle-version="3.7.0",
 org.antlr.runtime.source;bundle-version="3.2.0",
 org.antlr.runtime_3.1.b1;bundle-version="3.1.0",
 com.ibm.icu.source;bundle-version="4.4.2",
 org.eclipse.jdt.core.source;bundle-version="3.7.0",
 org.eclipse.emf.mwe2.launch;bundle-version="2.2.0"
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: nn

神经网络插件指的是我的图形编辑器的gmf项目,在这里可以找到元模型,而org.xtext.example.neuralnetworks是对应于我的文本编辑器的。

与emf文件相对应的ecore文件中确实有EClass系统。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-11 10:28:52

你的dsl看起来怎么样?它是否包含一个名为EClass的系统?更新:刚刚看到您没有基于Xtext的元模型。因此,如果您想使用Xtext阅读器组件,就必须使用AbstractGenericResourceSupport并注册您的epackage,正如本Xtend2示例http://christiandietrich.wordpress.com/2011/07/29/xtend2-code-generators-with-non-xtext-models/所描述的那样

票数 0
EN

Stack Overflow用户

发布于 2012-02-11 17:11:29

没有,但是由于您使用的是现有的元模型,而不是派生的元模型,所以您应该在工作流的开头添加以下内容

代码语言:javascript
复制
bean = StandaloneSetup {
    registerGeneratedEPackage = "sample.SamplePackage"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9231462

复制
相关文章

相似问题

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