<div dir="ltr">MLの皆さん:<div>お世話になります.SUGAR SWEET ROBOTICSの菅です.</div><div><br></div><div>Java版のRTMを使っていますが,独自データ型を使う場合にバグがあります.</div><div><br></div><div>1. IDLで独自データ型を定義する</div><div>2. classをjarアーカイブにする</div><div>3. rtcdでロードする</div><div><br></div><div>このようにすると,独自データ型をスタブを発見できずに,</div><div>データ型無しの状態になってしまいます.ログを見ると,InPortクラスで,</div><div>ClassNotFoundExceptionがキャッチされているのがわかります.</div><div><br></div><div>問題は,InPortクラスで,</div><div>InPort.javaの120行目付近のコード</div><div>=========</div><div><div>       Class cl = value.v.getClass();</div><div>        String str = cl.getName();</div><div>        try {</div><div>            Class holder = Class.forName(str+"Holder",</div><div>                                         true,</div><div>                                         this.getClass().getClassLoader());</div><div>            m_streamable = (Streamable)holder.newInstance();</div><div>            m_field = m_streamable.getClass().getField("value");</div><div>        } </div><div>       /// この後にClassNotFoundExceptionがキャッチされる(菅)</div></div><div>=========</div><div>というところでポートのデータ型をロードしているのですが,</div><div>getClassLoaderだと,デフォルトのクラスローダだけを参照しているので,</div><div>jarファイル内にしか無い独自データ型だとうまくロードすることができません.</div><div><br></div><div>ローダーはManager側 (ModuleManager.javaあたり?) なので,</div><div>こちらと連携するのかと思います.</div><div><br></div><div>アドホックな対応としては,クラスのJarファイルをクラスパスに加えてしまうことです.</div><div>理想としては,rtc.conf側のみで対応できれば良いと思っています.</div><div><br></div><div>コードをちょろっと変える程度ではないので,報告まで,としておきます.</div><div><br></div><div>ではでは</div><div><br></div><div><br></div></div>