2012-12-13 21 views
5

Bir Java uygulaması ve RCP uygulaması arasında ortak kod var.NoClassDefFoundError Klasik jar olarak bir OSGI paketi çalıştırırken

  • bir ana sınıfı I Tycho ile tüm yerleşik

benim RCP uygulamada kullanmak için bir klasik kavanoz

  • olarak bir OSGi bildirim kullanmak: Ben içeren bir OSGI paket oluşturduk Ortak kodumda bir dış kavanoz kullanmam gerekene kadar ilk önce ve sonra iyi çalıştı.

    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" 
    

    Ben Tycho ile benim BİP uygulama oluşturmak ve çalışır:

    Böylece benim MANIFEST.MF JSch eklemek zorunda JSch kullanmak gerekir. Ben Eclipse ile benim paketi dışa aktarırsanız

    Exception in thread "main" java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException 
    

    , çalışır: Ben java -jar myjar.jar ile saf JAR olarak paket çalıştırdığınızda Fakat, aşağıdaki hatayı alıyorum. Bu yüzden benim tycho yapılandırmasında bir hata var ...

    Bu sorun nasıl çözülür? Tycho için bağımlılığı olan bir kavanoz var mı? Durum böyle gözükmüyor. Neleri özledim?

    (My yapılandırma: M2e ile Eclipse Juno, Tycho 0.16.0, p2: Juno, Tycho: ambalaj> Tutulma-eklentisi, hedef platform-yapılandırması: çözümleyici = p2 ve pomDependencies = düşünün.)

  • cevap

    0

    eğer Linux/Unix platformu üzerinde çalışıyoruz, sen java -classpath deneyebilirsiniz: Eğer windows platformunda çalışıyorsun eğer myjar.jar com.yourpackage.mainclass

    , sen java -classpath deneyebilirsiniz; myjar.jar com. yourpackage.mainclass

    +0

    Evet, sınıf yolunu biliyorum. Ama Eclipse'in yapabileceği gibi eksiksiz bir OSGI paketine ihtiyacım var. Komut satırı sürümü için sadece bir kavanoz dağıtmak istiyorum. Tycho ile nasıl kurulur? – cswormy

    +0

    Oluşturulan eclipse dışa aktarma ile yazdığınız MANIFEST.MF'yi karşılaştırmayı deneyebilirsiniz. – Weibo

    1

    Yapınıza maven-assembly-plugin ekleyin ve tüm bağımlılıkları ile bir kavanoz inşa t: kavanozlar packed individually nerede

    <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <version>2.4</version> 
        <configuration> 
         <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs> 
        </configuration> 
    </plugin> 
    

    Alternatif olarak, aynı zamanda bir montaj oluşturabilir. Bunun için kendi assembly descriptor'unuzu yazmanız gerekecek.

    İlgili konular