2009-04-20 7 views
1

현재 필수 플러그인의 클래스를 참조하는 기존 플러그인이 있습니다. 이 코드를 내 조각의 일부인 클래스에 대한 참조로 바꿨습니다.기존 플러그인의 required-plugins 목록에 내 조각을 추가하는 방법

두 가지 문제가 있습니다. 조각을 jar 파일로 가져온 경우 Eclipse 응용 프로그램으로 실행되는 플러그인이 ClassNotFoundException으로 실행될 때 변경 사항을 볼 수 없습니다.

이 문제를 극복하기 위해 추가 소스 (조각)를 기존 플러그인 프로젝트에 추가합니다. 그러나 링크는 절대 경로를 사용하므로 배치에 적합하지 않습니다.

코드 수정 코드로 플러그인을 패키징하고 내 조각 코드에 "의존"할 수 있기를 원합니다. 종속성으로 내 조각을 추가 할 수있는 방법이 있습니까? 예를 들어

:

Plugin Project I am changing : org.eclipse.*.editor 
it depends on org.eclipse.*.edit 

I have a fragment mydomain.*.edit which has org.eclipse.*.edit as host plugin 

I want org.eclipse.*.editor to pick up mydomain.*.edit 
instead of org.eclipse.*.edit 

추신 : 나는 또한 사용자 도메인에 대한 jar 파일을 포장 시도 * 플러그인 디렉토리에 편집하고 시도하고 거기에서 그것을 선택, 그것은에 표시 나던.. org.eclipse. *. editor의 plugin.xml 파일에있는 의존성 탭에서 필요한 플러그인을 클릭하면 목록이 표시됩니다.

내가 명확하지 않으면 알려 주시면 다시 시도해 보겠습니다.

미리 감사드립니다.

답변

2

나는 당신이하고 싶은 것을 정확하게 이해할 경우, 그것이 가능하다고 생각하지 않습니다. 다른 방법을 시도해야합니다.

플러그인은 다른 플러그인에 종속됩니다. 단편은 별도의 런타임 엔티티로 존재하지 않지만 플러그인의 확장으로서 만 존재합니다. 따라서 플러그인은 '편집기'플러그인 만 참조 할 수 있습니다.

조각에서 제공하는 클래스는 직접 액세스 할 수 없으며 직접 액세스해서는 안됩니다.

다른 플러그인 (B)의 프래그먼트 코드를 참조하면 클래스는 플러그인 B의 클래스 로더에 의해로드 될 것입니다 (플러그인이 제공하는 실행 가능 확장을 구현하는 경우). 플러그인 A에 의해로드 된 것과 다릅니다.

조각의 목적은 무엇입니까? 플러그인 A의 내부 코드에 액세스하고 싶습니까? 이클립스 편집기를 확장 하시겠습니까?

원본 플러그인이 확장 성이없는 기능을 확장하려면 플러그인을 작성하고 원래 플러그인의 편집기 클래스를 확장 한 다음 원래 플러그인과 함께 등록한 다음 대신 사용하는 것이 유일한 방법이라고 생각합니다. .

[편집] 어쩌면이 링크는 더 설명 할 것입니다 :이 도움이 Eclipse FAQ

희망, 블라드

0

감사 블라드는, 귀하의 설명은 매우 도움이되었다. 진정으로 조각을위한 확장 기반 아키텍처와는 달리 확장 프로그램의 일부로 노출되지 않은 특정 구성 요소를 편집기에서 수정해야했습니다. 이 수정은 프래그먼트로 작성한 외부 프로젝트를 참조했지만 일반적인 Java 프로젝트 일 수 있었고 편집기의 클래스 경로에 배치 할 수있는 jar 파일을 패키지화 할 수있었습니다.

jar 파일을 클래스 경로에 배치하여 종속성 문제를 해결할 수 있었지만 플러그인 및 관련 플러그인을 jar 파일로 내 보낸 다음 dropin 디렉토리에 배치하면 올바르게 설치되지 않습니다. (jar 파일을 plugins 디렉토리에 두지 마십시오.)

수정하려는 Eclipse 편집기는 EMF 프로젝트를 사용합니다. 에디터의 종속성을 해결하기 위해 EMF 프로젝트를 작업 공간 inorder에 보관했습니다. 그러나 EMF jar 파일을 Eclipse에서 번들로 바꾸면 작업 영역에있는 EMF jar 파일을 바꿀 때 편집하려는 파일이 올바르게 인식되지 않습니다.

다른 방법이 있습니까?