Domanda

Sto cercando di creare un semplice plug-in Eclipse. Quando eseguo l'applicazione, vedo questo errore nel file di registro:

  

org.osgi.framework.BundleException: L'attivatore di fascio   org.x.y.Activator per il fascio di org.x.y non è valido.

Avete qualche idea su questo errore?

È stato utile?

Soluzione

Controlla la tua build.properties

Se non specifica correttamente quello che dovrebbe essere nel risultato finale binario, non funzionerà. Controllare i file .class sono dove il MANIFEST.MF dice che sarà.


EclipseZone , un altro motivo per questo messaggio di errore:

  

Se viene visualizzato un messaggio nel registro come

 The activator org.example.FooActivator for bundle org.example.foo is invalid 
  

, allora questo significa di solito c'è stato un ClassNotFoundException cercando di caricare la classe, in primo luogo, prima ancora arrivato al metodo start ().


penguru aggiunge:

  

L'errore si verifica quando si tenta di creare un nuovo oggetto da qualsiasi altra classe nel costruttore della classe di attivatore. Non è legale per creare un oggetto in plug-attivatore?

  • Se quella classe, se da un altro plugin che non è ancora stato "attivato", che potrebbe essere il problema.
  • Se quella classe non si trova, che sarebbe anche invalidare la vostra attivatore plugin.

I consigli di base: potrebbe essere meglio con i tuoi inizializzazioni fatto nel metodo start() di Activator piuttosto che il suo costruttore.

Altri suggerimenti

Ho anche affrontato lo stesso problema durante l'importazione dei plugin da diverso spazio di lavoro. Fondamentalmente, è il percorso di classe fascio in cui il quadro cerca durante il caricamento delle classi. Quando si importa a un'area di lavoro diversa, assicuratevi di modificare il percorso di classe per puntare alla posizione appropriata cioè in cui il file di classe sono presenti.

Dopo aver modificato il percorso di classe cercare di pulire e ricostruire e ri-run. Dovrebbe work..hopefully ..

Se avete spostare l'area di lavoro di Eclipse per un nuovo percorso, quindi si dovrebbe utilizzare il Progetto-> pulita prima della costruzione plug-in, Oppure si potrebbe incontrare questo problema.

OK, io odio essere capitano ovvio qui, ma ho fatto questo errore prima. Questo può succedere anche quando si dimentica di estendere la BundleActivator.

ho trascorso qualche tempo con questo problema. Infine ho notato che le ClassNotFoundExceptions non erano in linea con il mio codice, venivano da errate (vecchi) pacchetti. Ho controllato se ci fosse qualche altro plugin che è stato pasticciano con i miei esegue il debug / export e in effetti ci fu, la mia plug!

Quindi, una semplice correzione da provare se si sta affrontando questo e il CNFE di non sono in linea con il codice:

  • Vai a "Installare il nuovo software"
  • Fare clic su "già installato"
  • Rimuovi tutte le istanze del proprio pacchetto / plugin e riavviare

Probabilmente questo è stato causato perché ho cambiato l'ID plug-in, rendendo Eclipse trattarlo come un nuovo plugin.

Un altro buon sito per dare un'occhiata se stai ricevendo frustrati e bloccato: http: //www.eclipsezone.com/eclipse/forums/t99010.html

Nel mio caso c'era questo messaggio "Activator ..invalid" ma nei prossimi eccezioni c'erano eccezioni ClassNotFound in un bundle erano i didnt cambiare qualcosa ..

Guu (Pubblicato una soluzione troppo) è il mio eroe, Dopo aumentando

Bundle-ManifestVersion: 2

a

Bundle-ManifestVersion: 3

tutto funziona:)

Ho avuto la stessa eccezione. Il problema alla base era un ClassCastException. Il mio pacco richiede org.osgi.core 4.3 mentre il lanciatore dell'equinozio utilizza 4.2.

Saluti Roland

Questo può succedere anche se il nome di un pacchetto dopo un pacchetto in un altro fascio.

  • se avete Bundle A che contiene il pacchetto org.my.package.name.function,
  • e si crea con il nome bundle B org.my.package.name.function,
    • => allora il sistema può cercare l'attivatore lì, e non trovare qualsiasi.

ho trovato il motivo dell'errore. L'errore si verifica quando si tenta di creare un nuovo oggetto da qualsiasi altra classe nel costruttore della classe attivatore. Non è legale per creare un oggetto in attivatore di plug-in?

Nel mio caso questa eccezione era a causa della incapacità di Eclipse classe personalizzata loader per risolvere e caricare tutte le classi a seconda da altri plugin in-time. Non sto Eclipse super-guru quindi magari era colpa mia.

Tuttavia è stato fissato disabilitando lazy loading di plugin. In GUI su Panoramica scheda di editor di MANIFEST.MF deselezionare Attiva questo plug-in, quando viene caricato uno delle sue classi . O direttamente in MANIFEST.MF cancellare riga

Bundle-ActivationPolicy: lazy

Un altro capitano ovvio:. Se si modificano i percorsi dei file di origine (ad esempio src / a src / main / java), ma dimentica di aggiornare build.properties, la compilation sarà sempre successo, ma il plugin non funzionerà mai

ho avuto lo stesso errore, nel mio caso ho creato il mio costruttore con parametri. Ma io non ha fornito un costruttore di default. Così, dopo aver rimosso il mio costruttore e inizializzato tutti all'interno del metodo start (), ha funzionato come fascino.

Ho anche incontrato lo stesso errore. XX attivatore per il fascio di XX è valido, e il ClassNotFoundException. Ho controllato i plugin \ directory, e non riuscivo a trovare la classe necessaria.

- Perché non c'è nessun file jar che contiene la classe necessaria, non v'è solo la directory corrispondente. Per esempio, non v'è alcuna com.hh.jar, ma solo com.hh directory.

Quindi, ci deve essere qualcosa che non va a creare il com.hh.jar.

Se il riferimento com.hh.jar altri plugin, quindi controllare anche loro.

ho risolto il problema modificando MANIFEST.MF. Aprirlo plug-in Manifest Editor, nella scheda Runtime, aggiungere i pacchetti necessari "Pacchetti esportato". e nel "percorso di classe", aggiungere le librerie necessarie, e, "" (Directory corrente, IMPORTANTE)

Inoltre ho eseguito in questo isue quando i file jar semplici 'fascio-izing. Se alcuni dipendenze non vengono risolte, o vasetti dipendono da una versione di Java superiore a quello che si sta utilizzando, l'attivatore non si avvia, dando l'eccezione di cui sopra. Il modo più rapido per scoprire se questo è il problema è quello di rimuovere i vasetti dal fascio-classpath (scheda Runtime del manifesto) e verificare se l'attivatore verrà eseguito correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top