No.2ベストアンサー
- 回答日時:
Process process = null; の直後に process.getOutputStream() を実行すれば java.lang.NullPointerException が出るのは当然です。
> uml_processがUMLを起動するためのプロセス(端末)で
> processがUMLの内部(UML本体)であると私は考えています。
JavaのProcessクラスとして扱えるのはJavaプログラムから直接起動したプロセスだけです。UMLの仮想環境の中で動いているLinuxプロセスを、その外で動いているJavaプログラムから操作することはできないでしょう。
この回答への補足
> JavaのProcessクラスとして扱えるのはJavaプログラムから直接起動した
> プロセスだけです。UMLの仮想環境の中で動いているLinuxプロセスを、
> その外で動いているJavaプログラムから操作することはできないでしょう。
UML自体はJavaから起動したものであり、UML自体が仮想環境なのですが、
それでも無理でしょうか。
No.3
- 回答日時:
> UML自体はJavaから起動したものであり、UML自体が仮想環境なのですが、
> それでも無理でしょうか。
Processクラス経由でできるのは、Javaから直接起動したプロセスであるuml_processの標準入出力を読み書きすることだけです。質問者さんがやりたいことをそれで実現できるかどうかは分かりませんし、その確認のためにUser Mode Linuxの環境を整えるつもりもありません。
process.getOutputStream()ではなくてuml_process.getOutputStream()は試してみたのでしょうか?
No.1
- 回答日時:
普通のUNIXのコマンド(catとか)だったら、java.lang.Processクラスの
getOutputStream()
getInputStream()
getErrorStream()
メソッドを使えばプロセスの標準入出力とJavaの入出力ストリームをつなげます。
ただ、User Mode Linuxの入出力が普通の標準入出力かどうかは分かりません。
この回答への補足
お返事ありがとうございます。
UserModeLinuxの入出力も普通の標準入出力のようです。
ただ以下のようなプログラムを作成したのですが、うまく動作しません。
◎プログラム
import java.io.*;
public class UMLControl {
public static void main(String[] args) throws IOException, InterruptedException{
// UMLの起動
String command[] = {"linux.uml", "ubd0=uml-root-hardy", "umid=uml1"};
Process uml_process = Runtime.getRuntime().exec(command);
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プロセスへの標準入力を渡して、実行するためのソースコード
// プロセスへのコマンドを書き込むための、BufferWiter型のフィールドを宣言する
BufferedWriter bufferedwriter;
Process process = null;
bufferedwriter = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
// ユーザのコマンドの入力
BufferedReader input = new BufferedReader (new InputStreamReader(System.in), 1);
System.out.print("UMLで実行するコマンドを入力してください>>");
String uml_control; // 文字列を入力する
uml_control = input.readLine(); // コマンド(文字列)の入力
bufferedwriter.write(uml_control);
bufferedwriter.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(numRead);
numRead = inputreader.read(cbuf);
}
}
}
}
◎実行結果
:
UserModeLinuxの起動画面
:
Exception in thread "main" java.lang.NullPointerException
at UMLControl.main(UMLControl.java:19)
上記のようになってしまいます。
uml_processがUMLを起動するためのプロセス(端末)で
processがUMLの内部(UML本体)であると私は考えています。
UserModeLinuxの起動画面の後に
UserModeLinuxの内容を出力したいと考えているのですが、
どこがおかしいでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Java Java 年数計算 3 2023/01/28 10:52
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java javaの質問です 3人の名前をコンソールに入力して名前を表示。 3人目、入力後に「何番目の名前を表 1 2022/06/09 17:42
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Excel(エクセル) VBAで、㉑という数値が、正しく、入力できない 2 2022/07/26 20:22
- Java javaについて 4人の名前と年齢をコンソールに入力して、指定した名前の年齢を表示したいです! よろ 1 2022/06/10 17:12
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- Excel(エクセル) Excelで【1-1】【1-2】【1-3】という連番の文字の入力が上手く出来ません。 5 2022/11/16 13:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列にnullを代入すると、null...
-
プログラミングの問題です。大...
-
htmlのinput type="date"をgett...
-
変数名とDBカラム名の関係性に...
-
Eclipse 動的プロジェクトで404...
-
「main メソッドを持つクラスが...
-
どんな時にIteratorを使うと便...
-
CSV出力を画面から選択したデー...
-
JaneStyleのスレッドが見れなく...
-
マイクラでPythonのプログラミ...
-
eclipseで作ったプログラムを他...
-
えハミルトン路と全域木のちが...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
Jupyter notebookですわかりま...
-
下記問題の答えが"D"になる意味...
-
改行含むテキストの表示の仕方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
マイクラでPythonのプログラミ...
-
配列にnullを代入すると、null...
-
jdk17.06のインストーラーが起...
-
Eclipse 動的プロジェクトで404...
-
list の空は [] ってあわらすのに
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
正規表現について質問です。 カ...
-
eclipseで作ったプログラムを他...
-
改行含むテキストの表示の仕方
-
リレーションエンティティクラ...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
キー入力について
-
自作Androidアプリのデータ引き...
-
問題作成のWebアプリの作り方を...
-
eclipse実行ができない
-
変数名とDBカラム名の関係性に...
-
デバッグツールの具体例を教え...
おすすめ情報