Ho codice comune tra un'applicazione Java e un'applicazione RCP. Così ho creato un pacchetto OSGI quali contiene:NoClassDefFoundError quando si esegue un bundle OSGI come jar classico
- una classe principale di utilizzarlo come un classico barattolo
- un manifesto OSGi per usarlo nella mia richiesta RCP
ho costruito tutto con Tycho Manifest-first e ha funzionato bene fino a quando ho avuto bisogno di utilizzare un jar esterno nel mio codice comune.
ho bisogno di usare jsch quindi devo aggiungere jsch nel mio MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Main-Class: mygroupid.Main
Bundle-Name: Common tools
Bundle-SymbolicName: common-tools
Bundle-Version: 1.0.1.qualifier
Export-Package: mygroupid,
mygroupid.tools
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Import-Package: org.osgi.framework;version="1.3.0"
Require-Bundle: com.jcraft.jsch;bundle-version="0.1.46"
io edificherò la mia applicazione RCP con Tycho e funziona. Ma quando ho eseguito il bundle come pura JAR con java -jar myjar.jar
, ottengo il seguente errore:
Exception in thread "main" java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException
Se posso esportare il mio pacco con Eclipse, funziona. Quindi ho un errore nella mia configurazione tycho ...
Come risolvere questo problema? Esiste un jar-with-dependencies per Tycho? Sembra non essere il caso Cosa mi sono perso?
(La mia configurazione: Eclipse Juno con M2E, Tycho 0.16.0, p2: Juno, Tycho: imballo> eclipse-plugin, target-piattaforma di configurazione: resolver = P2 e pomDependencies = considerano.)
Sì, conosco classpath. Ma ho bisogno di un pacchetto OSGI completo come Eclipse può farlo. Voglio distribuire solo un jar per la versione da riga di comando. Come costruirlo con Tycho? – cswormy
Puoi provare a confrontare il MANIFEST.MF che hai scritto con l'esportazione di eclipse generata. – Weibo