【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

仮想環境UserModeLinuxの標準入力/標準出力を取り出し
Javaのコンソールからコマンドを送信し、結果を出力するプログラムを作成したいと考えいてます。

プログラムは以下の通りです。
import java.io.*;

public class UMLControl {

public static void main(String[] args) throws IOException{
/*
* UMLの起動
*/
String command[] = {"linux.uml", "ubd0=uml-root-hardy", "umid=uml1"};
// UMLを起動するためのプロセス(端末)
Process uml_process;
uml_process = Runtime.getRuntime().exec(command); // UMLを起動する
InputStream is = uml_process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = br.readLine()) != null){
System.out.println(line);
}

/*
* UMLプロセスへの標準入力を渡して、実行するためのソースコード
*/
// UML本体のプロセス
Process process;
int uml_number = 1; // 作成したいUMLの数(私の場合は1台のみ)
int uml_no = 1; // 起動するUMLのナンバー(私の場合は1台のみ)
// プロセスへのコマンドを書き込むための、BufferWiter型のフィールドを宣言する
BufferedWriter bufferedwriter[uml_number];
bufferedwriter [uml_no] = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
// ユーザのコマンドの入力
// バッファリーダーの宣言(文字型入力ストリームから効率よくテキストを読み込む)
BufferedReader input = new BufferedReader (new InputStreamReader(System.in), 1);
System.out.print("UMLで実行するコマンドを入力してください>>");
String uml_control = input.readLine(); // コマンド(文字列)の入力
// 文字列を送る
bufferedwriter[uml_no].write(uml_control);
bufferedwriter[uml_no].flush();

/*
* 標準入出力を表示するソースコード
*/
BufferedReader inputreader = new BufferedReader(new InputStreamReader(process.getInputStream()));
// コマンドを読むバッファ
char[] cbuf = new char[8192];
// 入力を読み込む
int numRead = inputreader.read(cbuf);

while(numRead != -1){
if(numRead <= 8192){
// 標準入出力の内容を表示する
System.out.println(new String(cbuf, 0, numRead));
numRead = inputreader.read(cbuf);
}
}
}
}

UserModeLinuxの起動まではうまく動作します。
その後の「BufferedWriter bufferedwriter[uml_number];」
のuml_numberの部分で赤線があり、実行しても以下のように表示されます。
Exception in thread "main" java.lang.Error: コンパイル問題が未解決です:
トークン "uml_number" に構文エラーがあります。このトークンを削除してください

at UMLControl.main(UMLControl.java:28)
どのように解決するべきでしょうか。

A 回答 (1件)

俺は指摘のコードを修正後ちゃんと動くか確認したわけではありません、というかする気がありません。


====================
C言語とかVBとかにやると配列をそう書きたくなりますが
Javaの配列の宣言はこうですから
>char[] cbuf = new char[8192];
BufferedWriter[] bufferedwriter = new BufferedWriter[uml_number];
であるんじゃないかな、と予測します。
    • good
    • 0
この回答へのお礼

ありがとうございます。
もう一度きちんと調べて質問し直したいとおもいます。

お礼日時:2010/01/14 19:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!