マルチエージェント開発のプラットフォームとなることを目的としたJavaプロジェクトを継承しました。アイデアは、プラットフォーム上で実行される「アプリケーション」を作成できるということです。エンドユーザーがアプリケーション(jarにパッケージ化されている可能性が高い)を事前定義されたフォルダーに追加し、プラットフォームが読み取るマニフェストファイルにそのjarの存在への参照を追加できるように、ベースプラットフォームを配布する方法を探しています。したがって、そこからファイルにアクセスできます。
私は次の答えを見てきましたが、これらはプラットフォームコードが設計時にクラスの名前を知っていることを要求しているようです:
理想的には、次の構造が機能するようにしたいと思います。
- メインディレクトリ:platform.jar、apps.manifest、Apps(ディレクトリ)
- Apps / App1 / app1.jar、Apps / App2 / app2.jar、...、Apps / AppN / appN.jar
apps.manifestには、各アプリのエントリが含まれます。これには、jarへのパスと、メインのアプリケーション(共通インターフェイスを実装する)オブジェクトであるクラスの名前が含まれます。
platform.jarのメインコードで、マニフェストを読み、N個のアプリケーションがあることに注意してくださいApplicationOne appOne = new ApplicationOne(this)
。ここApplicationOne
で、はプライマリアプリケーションオブジェクトの名前であり、app1.jar
はからthis
のオブジェクトへの参照です。platform.jar
アプリケーションへの参照。
すべてのjar(platform.jar
およびアプリケーションjar)がすべてユーザーのクラスパスにある場合、すべて上記のように機能しますか?もしそうなら、Javaのユーザーのクラスパスにディレクトリ(およびすべてのサブディレクトリ)を一時的に追加する方法はありますか?実行すると実行できますplatform.jar
か?囲んでいるフォルダはファイルシステム上で移動可能でなければならないので、一時的にお願いします。
この問題に関するアドバイス、および質問をより明確で読みやすくするための改善に関するアドバイスを歓迎します。
ありがとう