Ich habe einen gemeinsamen Code zwischen einer Java-Anwendung und einer RCP-Anwendung. So habe ich ein OSGi-Bundle erstellt, die enthält:NoClassDefFoundError beim Ausführen eines OSGI-Bundles als klassisches jar
- eine Hauptklasse es als klassisches Glas es in meiner RCP-Anwendung zu verwenden
- ein OSGi-Manifest zu verwenden
ich gebaut alle mit Tycho Manifest zuerst und es funktionierte gut, bis ich ein externes Glas in meinem gemeinsamen Code verwenden musste.
Ich brauche zu verwenden jsch so habe ich jsch in meinem MANIFEST.MF hinzufügen:
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"
ich mit Tycho meine RCP-Anwendung erstellen und es funktioniert. Aber wenn ich das Bündel als reine JAR mit java -jar myjar.jar
laufen lasse, erhalte ich folgende Fehlermeldung:
Exception in thread "main" java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException
Wenn ich mit Eclipse mein Bündel exportieren, es funktioniert. So habe ich einen Fehler in meiner Tycho-Konfiguration ...
Wie man dieses Problem löst? Gibt es ein Jar-mit-Abhängigkeiten für Tycho? Es scheint nicht der Fall zu sein Was habe ich verpasst?
(Meine Konfiguration: Eclipse-Juno mit M2e, Tycho 0.16.0, p2: Juno, Tycho: Verpackung> Eclipse-Plugin, Ziel-Plattform-Konfiguration: Resolver = p2 und pomDependencies = betrachten.)
Ja, ich kenne Klassenpfad. Aber ich brauche ein komplettes OSGI-Paket, da Eclipse es kann. Ich möchte nur ein jar für die Befehlszeilenversion bereitstellen. Wie man es mit Tycho baut? – cswormy
Sie können versuchen, die MANIFEST.MF, die Sie geschrieben haben, mit dem generierten Eclipse-Export zu vergleichen. – Weibo