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

1 つの投稿 / 0 new
最終投稿
ysuga
オフライン
Last seen: 1年 7ヶ月 前
登録日: 2011-05-23 10:14
[openrtm-users 03227] OpenRTM-aist-Javaで独自データ型を使う場合の問題

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側のみで対応できれば良いと思っています.

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

ではでは

未定義

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2160
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク