[openrtm-users 02802] Java版のrtcdの動作について

Yuki Suga ysuga @ ysuga.net
2013年 5月 18日 (土) 03:07:52 JST


OpenRTM-aist MLの皆様:
お世話になります.菅です.

Java版のrtcdの動作について気になっているので,
メールを書きました.

rtc.confに適切な設定をしたrtcdを起動することで,
複数のRTCを簡単に起動できるのは皆さんご存知かと思います.

ポイントとしては,
manager.is_master : YES
manager.modules.load_path : モジュールがある場所
manager.modules.preload : モジュールのファイル名
manager.components.precreate : 自動的に起動するComponentの名前
と行った所だと思いますが,
Javaだけ,挙動が大きく違うので,変更してはどうか,という提案です.

たとえば,カレントディレクトリでrtcdを起動する場合,
ディレクトリ内に,
 - rtc - ConsoleOut.dll
        - ConsoleIn.dll
 - conf - rtc.conf
のように配置されている場合,
manager.modules.load_path : rtc
manager.modules.preload : ConsoleIn.dll, ConsoleOut.dll
manager.components.precreate : ConsoleIn, ConsoleOut
のように設定するのが定石と考えていますが,
現状のJava版では,相対パスをパッケージ名と解釈するコードがあるように見えます.

jp/go/aist/rtm/RTC/ModuleManager.javaのload関数内です.

svnリポジトリ:
http://svn.openrtm.org/OpenRTM-aist-Java/trunk/jp.go.aist.rtm.RTC/src/jp/go/aist/rtm/RTC/ModuleManager.java

230行目あたりが当該の箇所で,getModuleName関数は,jarファイル名を判別すると,
ファイルまでのパスをクラスのパッケージパスと解釈して文字列を生成している
ように見えますが,あんまり意味がよくわかりません.

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

かなりアドホックなやり方ですが・・・

ご意見を頂ければと思います.


それでは



--
///////////////////////////////////////////////////////////////////
// Yuki Suga, Ph.D.
// URL: http://www.ysuga.net/?lang=en
// E-mail: ysuga @ ysuga.net
///////////////////////////////////////////////////////////////////
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: ModuleManager.patch
型:         application/octet-stream
サイズ:     2760 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20130518/64259a8b/attachment.obj>


More information about the openrtm-users mailing list