Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

プログラムの中でコンパイル

はじめまして。
ものすごい初心者ですみませんが、よろしくお願いします。

タイトルの通り、プログラムの中で、別のソースファイルをコンパイルしたいと思っています。
色々調べたら、

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
int result = compiler.run(null, null, null, "Test.java");
if(result == 0) {
  System.out.println("Success");
}
else {
  System.out.println("Fail");
}

こんな風にすると出来ると書いてあるページを見つけましたので、
その通りにやってみたところ、コンパイルは出来るのですが、実行すると

java.lang.NullPointerException

という感じでエラーになりました。
手動コピペぐらいの勢いでそっくり真似をしたんですが、何故出来ないんでしょうか?

ほんとに勉強始めたばかりで質問なんてしていいのかわからないのですが、
どうかよろしくお願いします。

7

回答

81180

閲覧

7件の回答

評価

0

まずはガイドラインくらい読むもんだ。

評価

0

>プログラムの中で、別のソースファイルをコンパイルしたい

初心者は、そんなことせんでよろしい。:-D

評価

0

tools.jar がありますか? 参照ライブラリに追加していますか?

評価

0

ううう、皆さんすみません。
ガイドライン読んだつもりだったんですが、
マニュアル、ドキュメントを確認と言うのの意味がわかっ
ていないままでした。
初心者じゃなくなるまでは、読むだけにします。

tools.jarというのは発見しました。
「参照ライブラリ」というのは、Eclipseというのと関係が
あるんでしょうか。
すみません、そこまで進んでいません。

そういう事ができると知って興味がわいたのでやってみた
かっただけなので、
こちらで質問などするべきじゃなかったですね……。
本当にすみませんでした。
失礼します。

評価

0

「初心者は質問自体しちゃだめ」などとは誰も言ってないし、そう言
える権利も持ってないんだけどな。
権利を持ってるとすればそれは管理人だけで、他の人間は管理人を代
弁するか、または管理人が認めている(と考えられる)自由の範囲内
で好き勝手に書く。

質問という名の丸投げは多くの場所で嫌われるし、ここでは管理人
が、「丸投げダメ」と明確に断っている。
それもあって、丸投げになってないか?と言いたいわけだ。
初心者であっても、整理し、順序立て、自分にできることをした上で
質問することは(完全でなくとも)できる。
そういう手順はJavaと直接には関係ないんだから。

また自ら「初心者です」と言うのは、相手を軟化させるより心象を悪
くするほうが多い。
なので、使わないほうがいい。

評価

0

もうひとつ。
「興味がわいた」というのはものすごく大事なことだよ。
その興味をうまく知識へとつなげたい。
しかし、何事にも手順やステップはある。
丸々答えを聞くことができたとしても、多分それは知識にはならない
だろう。

評価

0

初心者を脱出するためにいろいろ聞きましょう。
でも、「聞き方」というのがあります。

>マニュアル、ドキュメントを確認
JavaDocとか、EclipseのヘルプとかWikiとかですね。
自分で調べる努力はしましたか?ということです。

>tools.jarというのは発見しました。
>「参照ライブラリ」というのは、Eclipseというのと関係>があるんでしょうか。
これでは丸投げですよね。
検索するとこれがどういうことなのかくらいはすぐに出てきます。

あと、コピペしたコードの意味は理解していますか?
Exceptionはどこで起きましたか?

これらのこと(や、他のこと)を試したり、理解できているのであれば、それも書きましょう。簡潔に。

エスパーじゃないので、あなたの本当の理解度は伝わらないのです。

「興味がわいた」ということはいいことです。
まずは、質問を整理してみませんか?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。