2012-06-06 1 views
1

작동하지 않는 단편 프로젝트를 Eclipse 플러그인을 확장 할 때. 주된 이유는 제 3 자 플러그인이 기본 (패키지) 수정자를 가진 클래스를 포함하고 있기 때문입니다.클래스 로딩은 내가 조각 프로젝트를 사용하여 타사 이클립스 플러그인을 확장하기 위해 노력하고

따라서, 내 확장 클래스는 정확히 같은 패키지에 있어야합니다. 동일한 패키지를 포함하는 프래그먼트 프로젝트를 만들고 클래스를 배치합니다. 런타임 작업 영역을 사용할 때 모든 것이 잘 작동합니다. 내 조각을 배포하려고하면

그러나, (예를 들어, 내 이클립스 분포의 dropins 폴더에 배포하기), I는 코드를 실행할 수 없습니다입니다. 확장 기능과 같은 것들이 잘 작동합니다 (예를 들어, 새로운 실행 구성을 위해 확장을 사용합니다. 그러나이 실행 구성을 인스턴스화하려고하면 타사 루트 플러그인이 클래스를로드 할 수 없다는 오류 메시지가 나타납니다. 당신이에서 호스트에 클래스를 재정의 할 수 없습니다? 문제의이 종류.

답변

1

죄송합니다

경험을 내 구성 탭 그룹을 표시 할 수 있지만 호스트 번들이 그것을 위해 특별히 제작 된 않는 한 그. 작동하지 않습니다 그 이유는 클래스를 포함한 리소스가 프래그먼트 전에 호스트에서 검색된다는 것입니다.

구현을 위해 org.eclipse.osgi.baseadaptor.loader.ClasspathManager을 참조하십시오.

+0

사실, 난 그냥 플러그인의 클래스 경로에 추가 클래스를 추가하려면, 클래스를 대체하지 않습니다. 나는 이것이 파편을 사용함으로써 가능해야한다고 생각했다. 앞에서 말했듯이 JAR 파일을 조각으로 배치하고 런타임 작업 영역에서 조각을 실행하지 않는 한 실제로 작동합니다. –

+0

그리고 그것은 실제로 가능합니다! 그리고 단편의 주요 용도 중 하나 :-) –

+0

좋아, 그럼 왜 내 경우에 ClassNotFoundException을 얻습니까? 나쁜 점은 문제 해결을 위해 스택 추적을받지 못한다는 것입니다. 메시지와 함께 ErrorDialog를 얻었고 오류 로그는 비어 있습니다. 정확히 무엇을할지는 Eclipse 확장을 통해 새로운 실행 구성을 등록하고이 실행 구성을 인스턴스화하려고하면 문제가 발생한다는 것입니다. 이것은 아마도 확장 점 구현 내에서 문제가 되었습니까? 아니면 뭔가 간과 했습니까? –

0

사실, 이것은 내가 사용하고있는 확장 코드 :

<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups"> 
    <launchConfigurationTabGroup 
    class="com.android.ide.eclipse.adt.internal.launch.jouleunit.AndroidJouleUnitTabGroup" 
    id="com.android.ide.eclipse.adt.jouleunit.AndroidJouleUnitLaunchConfigTabGroup" 
    type="com.android.ide.eclipse.adt.jouleunit.launchConfigurationType"> 
    </launchConfigurationTabGroup> 

는 물론, 발사 구성 유형 등을 definig 더 확장있다하지만이 클래스에 이어지는 하나입니다 Eclipse에서 찾을 수 없습니다.

0

실제로 나는 이제 문제를 직접 발견했습니다. 문제는 내 조각 JAR에서 Java 바이트 코드를 제외시킨 잘못 구성된 빌드 특성 파일이었습니다. 클래스가 JAR에 있었지만 잘못된 하위 디렉토리에 있었기 때문에 매우 가려웠습니다.

관련 문제