2014-07-18 2 views
1

두 개의 관련 메타 모델부터 코드를 생성 중입니다. 주된 것은 두 번째 클래스의 클래스에 대한 참조를가집니다. Acceleo 실행은 Acceleo 플러그인으로 실행될 때 잘 작동하지만 Java 애플리케이션으로 실행될 때는 작동하지 않습니다. Java main class를 시작하면 두 번째 관련 메타 모델의 데이터가 표시되지 않습니다.Acceleo - Java 응용 프로그램과의 크로스 모델 참조

내가 오류 내가 당신에게 디버그 모드의 조각을 보여

org.eclipse.acceleo.engine.AcceleoEvaluationException: Unresolved compilation error in generation module 

입니다. 대상은 두 번째 메타 모델 (peersbehavior)의 클래스에 대한 참조입니다. ----

empty object

는 ---- URI는 올바른, 그것은 exact URI

---- 정확한 위치를 가리키는 것 ---- 그러나 값이 검색되지 않습니다

ATL Model2Model 변환과 비슷한 문제가있었습니다. "모델 간 참조 허용"옵션을 선택해야합니다. standalone documentation에 의해 지적하지만 Acceleo에 나는

내가 또한 시작 작품

public void registerResourceFactories(ResourceSet resourceSet) 
     { 
     super.registerResourceFactories(resourceSet); 
     // code added by me 

     resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("systembehavior", new XMIResourceFactoryImpl()); 
     resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("peerbehavior", new XMIResourceFactoryImpl()); 
     } 

이제 자바 클래스에서 이러한 코드 2 개 행을 추가,

[편집] 유사한 아무것도 찾을 수 없습니다 Java 클래스,하지만 Jar로 프로젝트를 내보내고 다른 프로젝트에서 사용하려고하면 전에 같은 문제가 있습니다

답변

0

이 코드를 추가하여이 문제를 해결했습니다 ([편집] 섹션 참조). 내 질문)

public void registerResourceFactories(ResourceSet resourceSet) 
     { 
     super.registerResourceFactories(resourceSet); 
     // code added by me 

     resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("systembehavior", new XMIResourceFactoryImpl()); 
     resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("peerbehavior", new XMIResourceFactoryImpl()); 
     } 

은의 src 디렉토리에 (그렇지 않으면이 .JAR에 삽입되지 않습니다), 수동 .emtl 컴파일 된 파일을 추가.

이러한 수정을 통해 Java 응용 프로그램으로 실행하면 코드 생성이 작동합니다. Acceleo 응용 프로그램으로 변환을 실행하면 작동하지 않습니다.

관련 문제