OpenRTM / OpenRTM-aist-Java

OpenRTM-aist: RT-Middleware and OMG RTC implementation in Java implemented by AIST
Other
1 stars 5 forks source link

jar file loadpath issue #88

Open n-ando opened 3 years ago

n-ando commented 3 years ago

jar file loadpath issue https://openrtm.org/openrtm/ja/content/openrtm-users-02802-java%E7%89%88%E3%81%AErtcd%E3%81%AE%E5%8B%95%E4%BD%9C%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

Identify the Bug

カレントディレクトリでrtcdを起動する場合, ディレクトリ内に,

Description of the Change

manager.modules.preloadに設定されたものが jarファイルの場合に,RTCのクラス名がデフォルトパッケージにある,という前提を元に, jarをURLClassLoaderで開き,クラス名からClass型オブジェクトを生成

前提条件

Javaで jarファイル内の特定のクラスをロードするおよびエントリーポイント関数を呼び出す場合は以下の条件・情報が必要

rtc.conf での指定方法について検討

例えば以下のように指定できるようにする。

# ↓この下にjarやclassがいろいろ入っている
manager.modules.load_path: /usr/share/openrtm-2.0/components/java, /home/work, /home/openrtm/katkin_ws

# ConsoleIn ConsoleOut.class→ classのRTC指定
# jarの指定→以下のようにjarファイルを指定技ごカッコ()内でパッケージ名・クラス名・初期化関数名を指定
# → この方法は他の言語との互換性も一応ある(他言語はカッコ内は初期化関数のみ)
# <module_name>(.<extention>) (package_names..class_name::init_func_name), ...
manager.modules.preload: ConsoleIn, ConsoleOut.class, SeqIn.jar (RTMExxamples.SeqIO.SequenceIn:myRegisterModule)

Verification