문제

RCPS가있는 사이트 업데이트는 Orphan 플러그인을 금지합니다. 그렇지 않으면 기능이 아닌 플러그인. 이 조건이 채워지지 않으면 업데이트 관리자는 다음 오류를 반환합니다. 결과 구성에는 플랫폼이 포함되어 있지 않습니다.

불행히도, 어떤 플러그인이 고아인지 결정할 방법이 없습니다. 고아 플러그인을 찾는 방법?

도움이 되었습니까?

해결책

시작점은 다음과 같습니다 (이것은 Eclipse 3.4에 적용됩니다. P2 저장소가 소개되면 이전 버전은 구성을 다르게 저장합니다. IIRC는 Platform.xml에서 모든 플러그인과 기능을 볼 수 있습니다).

"Hello World"템플릿을 사용하여 새 플러그인 프로젝트 (New-> Other-> 플러그인 개발-> 플러그인 프로젝트)를 작성한 다음이 코드를 샘플 리펜션의 실행 메소드로 삭제하십시오.

플러그인을 테스트 Eclipse 응용 프로그램으로 실행하고 샘플 메뉴-> 샘플 작업을 선택하십시오. 기능에 속하지 않는 플러그인은 Parent Workspace의 콘솔에 출력됩니다. 내가 이것을 실행했을 때 예상보다 꽤 많은 것이 있었고, 나는 몇 가지 외관을 가지고 있었고 논리 오류를 발견 할 수 없습니다.

Logic 오류를 찾은 편집은 가장 안쪽 루프에 사용 된 잘못된 배열 인덱스를 사용하고 있습니다. 그래도 여전히 옳지 않습니다.

편집 2. (FacePalm Moment)는 문제를 발견했습니다. 대상 작업 공간을 실행하십시오 모든 작업 공간 및 활성화 된 대상 플러그인이 활성화되었습니다, 또는 결과는 분명히 결과를 기울입니다. 플러그인을 설치하고 조금 옷을 입으면이 문제가 없습니다.

//get all the plugins that belong to features
IBundleGroupProvider[] providers = Platform.getBundleGroupProviders();

Map<Long, IBundleGroup> bundlesMap = new HashMap<Long, IBundleGroup>();

if (providers != null) {
    for (int i = 0; i < providers.length; i++) {
        IBundleGroup[] bundleGroups = providers[i].getBundleGroups();

        System.out.println("Bundle groups:");
        for (int j = 0; j < bundleGroups.length; j++) {
            Bundle[] bundles = bundleGroups[j] == null ? new Bundle[0] : bundleGroups[j]
                    .getBundles();
            System.out.println(bundleGroups[j].getIdentifier());
            for (int k = 0; k < bundles.length; k++) {
                bundlesMap.put(bundles[k].getBundleId(), bundleGroups[j]);
            }                
        }
    }
}

BundleContext bundleContext = Activator.getDefault().getBundle().getBundleContext();

if(bundleContext instanceof BundleContextImpl) {            
    Bundle[] bundles = ((BundleContextImpl)bundleContext).getBundles();

    System.out.println("Orphan Bundles:");
    for (int i = 0; i < bundles.length; i++) {
        if(!bundlesMap.containsKey(bundles[i].getBundleId())) {
            System.out.println(bundles[i].getSymbolicName());
        }
    }            
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top