- PR -

RMIを利用してのサーバー作成において、スタブの作成ができない。

1
投稿者投稿内容
tokonatu
会議室デビュー日: 2004/03/17
投稿数: 3
投稿日時: 2004-03-17 07:01
初めまして。過去ログ検索したのですが
見当たらなかったので質問させていただきます。

Java RMIを使用して計算機サーバーを作っている
のですがスタブの作成ができません。
参考にしているページは
http://java.sun.com/developer/onlineTraining/rmi/RMI.html#RMIStubsAndSkeletons
です。

スタブを作成しようとして、コマンドプロンプトで
C:\Lab>rmic CalculatorImplとしても
'rmic' is not recognized as an internal or external command, operable program or batch file
というエラーがでてしまい作成できません。

どうしたらよいでしょうか。
ayum
常連さん
会議室デビュー日: 2002/03/28
投稿数: 44
お住まい・勤務地: 東京
投稿日時: 2004-03-17 08:28
とりあえずは単純にjavaコマンドを認識してないように見受けられます。
java -versionと打ってちゃんとVMのバージョンが表示されるでしょうか?
通常のjavacでのコンパイルはできているでしょうか?

OSはWindowsのようですので、
環境変数PATHにJavaをインストールしたディレクトリ\binが
正しく通っているか確認してみてはいかがでしょうか。

Javaをインストールしたディレクトリ\bin\rmic CalculatorImpl

と打ってみたら動くということであれば単純にPATHが通ってないだけですし、
それでも動かないようならもう少し詳しい状況をお知らせください。
tokonatu
会議室デビュー日: 2004/03/17
投稿数: 3
投稿日時: 2004-03-17 08:47
回答ありがとうございます。

java -versionと打ってみましたが同じエラーが
でました。ということはJavaコマンドを認識して
いないのでしょうか?

そして
C:\Program Files\Java\j2re1.4.1\bin>rmic CalculatorImpl
で実行してみたところやはり同じエラーがでてしまいました。

普段はコマンドプロンプトは使用しないので・・・。
コマンドプロンプトはどうも苦手です。
ayum
常連さん
会議室デビュー日: 2002/03/28
投稿数: 44
お住まい・勤務地: 東京
投稿日時: 2004-03-17 09:06
JREでやろうとしてますね。
JREはJava Runtime Environmentの名称が示す通り
実行環境のみで開発環境(javacやrmic等のコンパイラ系とか)は含まれていません。
J2SDKはインストールされましたか?
インストールさて入るようでしたら

J2SDKをインストールしたディレクトリ\bin

の下にrmicコマンドが存在するので、そちらで試してみてください。
J2SDKがそもそも入ってないということでしたら、
まずはインストールしてください。
tokonatu
会議室デビュー日: 2004/03/17
投稿数: 3
投稿日時: 2004-03-17 13:09
J2SDKのbinの中にCalculatorImplクラス
を入れることで無事スタブの作成に成功しました。
ayumさんありがとうございました。

しかしまた質問になってしまうのですが、
CalculatorImplクラスなど(その他にこれ
に関係するクラス)は常にJ2SDKのbinの下に
置かなければいけないのでしょうか?
普通にクラスを他の場所(例えばリムーバブル)に置いたままで
rmicを実行するのは不可能なんでしょうか?

質問の意味がおかしかったらすみません。
ayum
常連さん
会議室デビュー日: 2002/03/28
投稿数: 44
お住まい・勤務地: 東京
投稿日時: 2004-03-17 20:00
rmicの動かし方は基本的にはjavacと同じなので、
javacでコンパイルできる状況であればrmicでも
クラスファイルの置き場所に関係なくコンパイルできるはずです。
前提としてJ2SDKのbinにPATHが通してあって、
カレントディレクトリの位置に関係なくjavacが使える状態であれば
後は通常javacでコンパイルする時と変わりません。
rmicはJavaファイルでなくクラスファイルを引数に取るとか、
java.rmi.Remoteとjava.io.Serializableを実装したクラスでないと
コンパイル時にエラーで弾かれるとか、
そういった違いはありますが・・・。

ちなみに、私は通常rmicを行う必要がある場合、
rmicコマンドを直接叩いて使うのでなく、
antのrmicタスクを使ってやっちゃいます。
いちいちjavacかけてからまたrmicかけたいクラスにだけrmic・・・、
とかやってると効率があまりよろしくないので。
1

スキルアップ/キャリアアップ(JOB@IT)