Java アプリケーションと RCP アプリケーションの間で共通のコードがあります。そこで、以下を含む OSGI バンドルを作成しました。
- クラシック jar として使用するためのメイン クラス
- RCP アプリケーションで使用するための OSGi マニフェスト
私は Tycho Manifest-first ですべてをビルドしましたが、共通コードで外部 jar を使用する必要が生じるまでは問題なく動作しました。
jsch を使用する必要があるため、 MANIFEST.MF に jsch を追加しました。
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"
Tycho を使用して RCP アプリケーションをビルドすると、動作します。しかし、バンドルを で純粋な JAR として実行するとjava -jar myjar.jar
、次のエラーが発生します。
Exception in thread "main" java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException
バンドルを Eclipse でエクスポートすると、機能します。だから私はtycho設定にエラーがあります...
この問題を解決するには?Tycho の jar-with-dependencies はありますか? そうではないようです 見逃したものは何ですか?
(私の構成: Eclipse Juno with m2e, Tycho 0.16.0, p2: Juno, Tycho: Packaging>eclipse-plugin, target-platform-configuration: resolver=p2 and pomDependencies=consider.)