2012-02-10 3 views
4

Xpand 생성기를 만들었습니다. 그것의 src/폴더에서 템플릿 My.nn과 워크 플로우를 정의했습니다. 내 workflow.mwe2 파일과 같은 방법오류를 해결하는 방법 Mwe2Launcher : 이름에 대한 EClass를 찾을 수 없습니다.

이입니다

내가 MWE2 워크 플로우 등이 workflow.mwe2 파일을 실행하기 위해 노력하고있어
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 
    } 
} 

, 나는 다음과 같은 오류를 얻을 :

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-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 프로젝트에 참조하는 neuralnetworks에게 메타 모델을 발견하고 어디를 :

는 MANIFEST.MF 파일에서 플러그인 종속리스트입니다 org.xtext.example.neuralnetworks은 내 텍스트 편집기에 해당합니다.

emf 파일에 해당하는 ecore 파일에는 EClass 시스템이 있습니다.

답변

0

당신의 DSL은 어떻게 생겼습니까? System이라는 이름의 EClass가 포함되어 있습니까? 업데이트 : Xtext 기반 메타 모델이 없다는 것을 알았습니다. 따라서 Xtext Mwe Reader 구성 요소를 사용하려면 AbstractGenericResourceSupport를 사용하고이 Xtend2 예제에 설명 된대로에 패키지를 등록해야합니다. http://christiandietrich.wordpress.com/2011/07/29/xtend2-code-generators-with-non-xtext-models/

+0

xtext 프로젝트가 기존 Ecore 모델에서 작성 되었기 때문에 내 xtext 파일이 자동으로 생성되었습니다. xtext 파일에는 'System'요소에 대한 구문 정의가 있습니다. 자습서에서이 xtext 프로젝트에서 자동 생성 된 파일, 즉 'StandaloneSetup'및 'RuntimeModule'클래스를 참조하는 파일을 수정해야한다는 것을 이해합니다. 그러나 이것들은 이미'NeuralNetworksStandaloneSetupGenerated'와'org.xtext.example.neuralnetworks.AbstractNeuralNetworksRuntimeModule'을 확장합니다. 이걸 수정해야합니까? – deedee

0

아니요,하지만 기존 메타 모델을 사용하고 파생 된 메타 모델을 사용하지 않으므로 워크 플로 시작 부분에 다음을 추가해야합니다.

bean = StandaloneSetup { 
    registerGeneratedEPackage = "sample.SamplePackage" 
}