クライアントマシン上で実行されるEclipse RCPアプリケーションがあります。いくつかのサードパーティ製のjar(Database connector Jarsなど)をクラスパスにインポートし、クラスパス内のjarで再起動できるようにするには、RCPアプリケーションが必要です。実行中のRCPアプリケーションのクラスパスに外部jarファイルをインポートする方法
私はどこでも見ようとしましたが、私はそれのためのチュートリアルを見つけることができません。次のコードを使用してjarをロードしようとしました:
urls = new URL[] { new URL("jar", "",
"file:" + "C:\\Users\\Jars\\mysql-connector-java-5.1.38.jar" + "!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls, this.getClass().getClassLoader());
Class<?> loadedClass = cl.loadClass("com.mysql.jdbc.Driver");
しかし、これは1つのクラスを読み込みます。 jarファイル内のすべてのクラスをロードしようとしても、jarファイルが本当にRCPアプリケーションのクラスパスにないため、内部依存関係を解決できません。
Bundle-ClassPath: Jars/mysql-connector-java-5.1.38.jar
しかし、私は、ツールを使用してjarファイルをパッケージ化することはできません。
それを行うための通常の方法は、MANIFEST.MFファイル内のjarのパスを追加し、瓶とツールをパッケージ化することです。
ほとんどの記事は、プラグインにパッケージをパッケージし、依存関係を提供すると言っています。しかし、私はクライアントマシンでそれを行うことはできますか?クライアントがちょうど私に瓶のパスを提供していますか?
また、OSGIフレームワークOSGI Tutorial by Vogelについても読んでいます。しかし、私はそれを理解することが困難であると私はそれが私の要件を満たしていないと思う。
これらはSQLDeveloperのようないくつかのRCPアプリケーションであり、さまざまなJDBC jarをそのクラスパスにインポートしてから、そのクラスパスでJARを使用して再起動する機能があります。だから私はそれが可能だと思います。
誰でも助けてくれますか?または、私をリンクに再登録しますか?事前に感謝
にこれは完璧に動作します。しかし、相互に依存し合う複数のジャーがあればどうでしょうか?これらのジャーも正しい順序でインポートできますか? –
はい、動作します。私は複数のジャーでテストしました。 –