Servicemix でバンドルを実行しています。会社のリポジトリに移動し、対応する JAR をローカル マシンにダウンロードしました。その JAR を抽出したところ、この JAR には META-INF フォルダーが 1 つしかないことがわかりました。このフォルダー内には、Manifest.mf ファイルと、Spring 構成ファイルや Camel Context ファイルなどのリソースがあります。そこで私は最初の質問を受けました。この JAR のソース ファイル、つまり JAVA クラスなどはどこにあるのでしょうか。私が見たのは、マニフェスト ファイル pom.xml、別の pom プロパティ ファイル、および spring と camel 用の他のいくつかの構成ファイルだけでした。
これが私の次のステップにつながりました。ワークスペースにもこのプロジェクトのローカル コピーがありました。このプロジェクトをローカルでビルドし、プロジェクトのターゲット ディレクトリに JAR を見つけました。
次の手順はばかげているように見えるかもしれませんが、とにかく私はほとんど実験をしませんでした. ターゲットで見つけたこのJARを抽出し、コンテンツを表示するために抽出しました。私は maven-bundle-plugin を使用したため、これがバンドルであると信じていましたが、JAR を見て、それが単なる JAR または OSGI バンドルであると判断する方法はありません。わかりましたので、JARを抽出し、今回はコンパイルされたJavaクラスがあったと思います。
これで終わりじゃない、またおかしなことをした。この JAR からコンパイル済みのクラスを削除し、会社の中央リポジトリからコピーしたものとまったく同じにしました。ここで、JDK の JAR 作成ユーティリティを使用して JAR を作成しました。
これで 2 つの JARS ができました。1 つは会社の中央リポジトリからダウンロードしたものです。自分で作成した別のもの。それは他のものとまったく同じ内容を持っています。この JAR を作成する際にも、同じ manifest.mf を使用しました。(マニフェストが oSGI バンドルのバックボーンであることは知っていたので)。
このバンドルをサーバーのホーム ディレクトリに安全にコピーしました。最後に、次を使用してこのバンドル/JAR を Servicemix にインストールしました: install file:path_to_JAR/JAR_FILE_NAME。
正常にインストールされました。しかし、このバンドルを開始しようとしたとき。開始できませんでした。表示例外を使用すると、例外が表示されました。Bean をロードできず、アプリケーション コンテキストを初期化できず、さらに具体的な例外「ClassNotFound」例外が続きました。アプリケーション コンテキストで定義されたクラスを見つけることができなかったことを理解しています。しかし、なぜYYYYYYYYYY?
まったく同じ手順を実行し、何度も確認しました。私が起動できなかった場合、なぜ以前のものが起動して実行されているのですか。
OSGI 環境で作業したことのある人にとってはばかげているように聞こえるかもしれませんが、今は特に ServiceMix を再検討し始めています。
提案をありがとう。