[openrtm-users 03227] OpenRTM-aist-Javaで独自データ型を使う場合の問題

Yuki Suga ysuga @ ysuga.net
2015年 10月 28日 (水) 11:51:59 JST


MLの皆さん:
お世話になります.SUGAR SWEET ROBOTICSの菅です.

Java版のRTMを使っていますが,独自データ型を使う場合にバグがあります.

1. IDLで独自データ型を定義する
2. classをjarアーカイブにする
3. rtcdでロードする

このようにすると,独自データ型をスタブを発見できずに,
データ型無しの状態になってしまいます.ログを見ると,InPortクラスで,
ClassNotFoundExceptionがキャッチされているのがわかります.

問題は,InPortクラスで,
InPort.javaの120行目付近のコード
=========
       Class cl = value.v.getClass();
        String str = cl.getName();
        try {
            Class holder = Class.forName(str+"Holder",
                                         true,
                                         this.getClass().getClassLoader());
            m_streamable = (Streamable)holder.newInstance();
            m_field = m_streamable.getClass().getField("value");
        }
       /// この後にClassNotFoundExceptionがキャッチされる(菅)
=========
というところでポートのデータ型をロードしているのですが,
getClassLoaderだと,デフォルトのクラスローダだけを参照しているので,
jarファイル内にしか無い独自データ型だとうまくロードすることができません.

ローダーはManager側 (ModuleManager.javaあたり?) なので,
こちらと連携するのかと思います.

アドホックな対応としては,クラスのJarファイルをクラスパスに加えてしまうことです.
理想としては,rtc.conf側のみで対応できれば良いと思っています.

コードをちょろっと変える程度ではないので,報告まで,としておきます.

ではでは
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://www.openrtm.org/pipermail/openrtm-users/attachments/20151028/1ac20767/attachment.html>


More information about the openrtm-users mailing list