Frage

Update-Sites mit RCP verbieten Orphan-Plugins, sonst Plugins, die nicht in einer Funktion ist. Ist diese Bedingung nicht gefüllt ist, kehrt der Update-Manager die folgende Fehlermeldung: Konfiguration erzielt wird, nicht die Plattform enthält.

Leider keine Möglichkeit, festzustellen, welche Plugins für seltene Leiden sind. Wie zu Orphan-Plugins finden?

War es hilfreich?

Lösung

Hier ist ein Ausgangspunkt (das für Eclipse gilt 3.4 und später, wenn die P2-Repository eingeführt wurde, frühere Versionen speichern ihre Konfiguration unterschiedlich. IIRC können Sie alle Plugins und Features in platform.xml sehen).

Erstellen Sie ein neues Plugin-Projekt (Neu-> Sonstiges-> Plug-in Entwicklung-> Plug-in-Projekt) mit der "Hallo Welt" Vorlage löschen Sie dann diesen Code in die Run-Methode des SampleAction.

Führen Sie das Plugin als Test Eclipse-Anwendung und wählen Sie Beispiel Menü-> Beispiel Aktion, die Plug-in, die zu einer Funktion gehören nicht auf den Konsole sein wird, übergeordnete Arbeitsbereich. Als ich dies lief es ganz wenige waren mehr als ich erwartet hatte, ich habe durch ein paar Blicke hatte und nicht den logischen Fehler erkennen.

Bearbeiten, Logikfehler gefunden, war der falschen Array-Index in innerste Schleife verwendet werden. Immer noch nicht ganz richtig aber.

Bearbeiten 2. (Facepalm Moment) das Problem gefunden. Achten Sie darauf, den Zielarbeitsbereich mit alle Arbeitsbereich und ermöglicht Ziel Plugins aktiviert laufen, oder es wird Ihre Ergebnisse verzerren, offensichtlich. Wenn Sie das Plugin installieren und kleiden es ein wenig bis Sie dieses Problem nicht haben.

//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());
        }
    }            
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top