2013-04-11 4 views
1

이미 질문 한 것처럼 보일 수도 있지만 다른 포럼 게시물에 표시된 솔루션은 저에게 효과적이지 않습니다.Acceleo 독립 실행 형 - 첫 번째 매개 변수는 프록시입니다.

독립 실행 형 프로젝트에서 Acceleo 프로젝트를 실행하려고합니다.

public void registerPackages(ResourceSet resourceSet) { 
    super.registerPackages(resourceSet); 

    if(!isInWorkspace(PSMAndroid.PSMAndroidPackage.class)){ 
     System.out.println("uri: "+PSMAndroid.PSMAndroidPackage.eNS_URI); 
      resourceSet.getPackageRegistry().put(PSMAndroid.PSMAndroidPackage.eNS_URI, PSMAndroid.PSMAndroidPackage.eINSTANCE); 
    } 
} 

또한 :

모듈은 다음과 같습니다
public void registerResourceFactories(ResourceSet resourceSet) { 
    super.registerResourceFactories(resourceSet); 
    resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("psmandroid",new XMIResourceFactoryImpl()); 

}

:

org.eclipse.acceleo.engine.AcceleoEvaluationException: The type of the first parameter of the main template named 'generateModel' is a proxy.

: 나는 다음과 같은 오류를 얻고있다

[module componentModule('org.colpaert.mathias.PSMAndroid')] 

다른 게시물을 살펴 보았지만 그 중 어떤 것도 저에게 적합하지 않았습니다. (herehere)

발전기는 위의 코드 줄없이 "acceleo 응용 프로그램"으로 실행되면 작동합니다. 내가 줄을 추가 할 때 자바 응용 프로그램으로 실행하면 위의 오류가 발생합니다. 내가 다시 "acceleo 응용 프로그램"으로 실행하려고하면, 나는 오류를 다음 얻을 :

error

는 그래서 더 이상 작동하지 않습니다.

어떻게해야합니까?

추가 정보 : 내 acceleo 생성 프로젝트의 빌드 경로 속성에서 ecore 모델 (모델 & genmodel 등의 프로젝트)을 프로젝트 참조로 추가했습니다.

답변

2

문제는 내 메타 모델 URI에있었습니다. 메타 모델은 ecore를 사용하여 정의되었으므로 항상 메타 모델 URI 앞에 "http : //"를 넣어야합니다!

내 메타 모델의 이름이되었다

:

[module model('org.colpaert.mathias.PSMAndroid')/]

이것은 acceleo는 상대 경로의 메타 모델을 찾아 원인 : org.colpaert.mathias.PSMAndroid, 그것은 다음과 같은 내 acceleo 모듈에서 가져온됩니다 모듈 파일에. 독립 실행 형에서는 컴파일 후/bin 폴더에 불과합니다.

내 ecore 메타 모델 URI를 변경하여 genmodel (등)을 재생성했습니다. 다음으로 acceleo 모듈을 다음과 같이 변경했습니다.

[module model(' http://org.colpaert.mathias.PSMAndroid ')/],

솔루션을 정리하고 다시 컴파일하여 작동 시켰습니다.

Stéphane Bégaudeau에게 큰 감사를 드리며 그는 here (프랑스어)

을 해결했습니다.