- ベストアンサー
JAVAコンパイルエラー全てを画面に表示したい
JAVAの初学者です。WIN98、JDKで勉強し始めています。 WINDOWのDOS画面で、JAVAC XXXX.JAVA(Enter)とコンパイルを行うと初回等には大変な数のエラーが出ます。初めの方のエラーは画面がスクロールされてしまって見えません。 皆さんはどうしておられるのでしょうか。紙に打ち出そうとしても、エラーは「標準エラー」に出力されるらしく、パイプやリダイレクト(>PRN や|MORE)が効かないようです。紙に打ち出す方法でもいいです。教えてください。 またエラーのある行番号数の表示が出ますが、コンパイルに差し障らないように、ソースに行番号数を一時的に画面表示だけ振る方法・エディターなどは有るのでしょうか。C言語の勉強でも同じとおもいます。 以前に、他の方が同じ質問をされていて回答がありましたが、その通りしても上手く行きません。初級の解説書もJDKのことは書いても、上記のことを書いた本は(10冊程度しか読んでいませんが)、全くありません。今日も「JAVAの勉強を始めるにはどうすれば良いか」とOK-WEBに質問があり、JDKで勉強しろとアドバイスがありますが、すぐ上記の疑問にぶつかると思います。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
確かにDOSプロンプトのエラー表示には頭を悩ませますね。。(^^; これは他の方がおっしゃられているようにエラー表示が標準エラー出力に出力されている為です。 で、私は別の切り口から。。無い物は作ってしまいましょう作戦 つうわけで標準エラー出力を標準出力に切り替えてしまうプログラムを作ってしまいましょう。 下は簡単なサンプルです。 import java.io.*; public class ExecTest { public static void main(String args[]){ if (args.length == 0 ) { System.out.println("Usage:java ExecTest command [args1 [args2][...]]"); System.exit(0); } String cmd[] = args; try { Process prc = Runtime.getRuntime().exec(cmd); InputStream is = prc.getErrorStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while((line = br.readLine()) != null){ System.out.println(line); } prc.destroy(); } catch(Exception e) { e.printStackTrace(); } } } 上のプログラムをExecTest.javaとして保存後コンパイルして DOSプロンプトより >java ExecTest javac programfile とすればOKなはずです。 programfileのところにはエラーのあるファイルを入れてください。 見た目は同じですが標準出力にエラーが出力されてますので|more も効くはずです。 一応JDK1.3の環境で実験済みなんで大丈夫だと思います。 では。。(^^;
その他の回答 (5)
- soakun
- ベストアンサー率66% (6/9)
前者について URLを参照してみてください。
- alfeim
- ベストアンサー率58% (114/195)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=135663 に以前に出た同様の質問があります。 >エラーの指摘が7件なのですが、SDK 1.3.1 で javac GDraw.java では25件エラー指摘が出ます。 についてですが、oldjavacは名前からみる限り以前のverのJava Compilerなんではないでしょうか? Javaは結構な頻度でバージョンアップをしており、クラスライブラリの位置変更/仕様変更をはじめ、少なからず言語仕様の変更などもなされているはずです。その違いから同じソースコードでもバージョンの違うCompilerにかければエラー結果は変わってきます。(一般的に言語仕様が明確、詳細になるため新しいVerのものを使うとエラーやワーニングの量は増えると思われます) 行番号に関しては多くのプログラム向けエディタでサポートされています。 行番号の問題を省いても予約語の強調表示やCompilerの呼び出し、エラー/ワーニングの該当位置へのジャンプなどの機能を持つものもありますのでご自身の手になじむエディタを探してみるのもいいかもしれません。 もしくは統合環境を用意するのもひとつの手です。 現在では無料で使用できる統合環境もあります。上記の機能も統合環境であれば当然のように持っていますし、ものによってはCompilerとして組み込みのものではなくJDK付属のjavacが使えるものもあります。
imogasiさん、こんにちは。 確かにJAVA2 SDK(JDK)のコンパイラのメッセージは不親切ですね。 他の方を示されているように、いろいろな手法があるようですが、OSやJAVA2の問題で、あまり満足のいく方法ではないですかね。個人的には、PCを買えばライセンス込みでバンドルされるOSに、無償で得られるSDKでは、ある程度我慢せざる得ないのかなと思っています。なので多量のエラーが発生したときは、自分で対処するしかないのかのと思っています。 私は、数百行、数千行あるプログラムソースの大部分を/* と */ で囲んでコメントにしておいて、コンパイルエラーにならないところまでに一旦しておき、コメントに少しずつ解除して、エラーの発生箇所を少しずつなくす方法をとっています(いました)。 経験上、多量に出ているコンパイルエラーも、1箇所の記述ミスを直すだけで数個から数十個解消されることが多いです。記述ミスつまりプログラマのケアレスミスですね。 そんな風に悪戦苦闘して経験を積めば、「多量エラーで悩む」前に「エラーの発生を未然に防ぐ」ことができると思います。初心者の方にはきついことかもしれませんし、遠回りのように思えるかもしれませんが、真の解決の早道になると思っています。 また、行番号に関連しますが、私は「秀丸」を利用しています。「秀丸」含め多くのプログラマ愛用エディタがシェアウェア(秀丸は4000円+諸費用)なので躊躇すると思います。なので、こればかりは、「(以下のVectorなど)Webサイトや雑誌付録から、フリー/シェアのエディタを取得して試して見てください」と言うしかないありません。 以上、参考になりましたでしょうか。
- arata
- ベストアンサー率49% (139/279)
finalanswerさんの紹介された方法は、Java2以降では使えないと思います。 oldjavacを使用する方法を紹介しておきます。 oldjavac -Xstdout sample.java > result.txt -Xstdoutを指定するとエラー出力が標準出力に変更されます。 なお、Windows2000の場合は、 javac sample.java 2> result.txt のように 2> でリダイレクトするとエラー出力がリダイレクトされますので、oldjavacを使用しなくてもOKです。
- finalanswer
- ベストアンサー率60% (182/303)
DOSプロンプトで、Javaのコンパイル時に表示されるメッセージは、以下のようなコマンドで取得できます。 (sample.javaをコンパイルしてresult.txtに出力する場合) javac -J-Djavac.pipe.output=true sample.java > result.txt Javaに関するよくある質問とその回答集を参考URLとして挙げておきます。
お礼
直ちにご回答に接し、やって見ました。誠に有難うございました。但しエラー指摘は、画面に出て、表示は流れて出てしまい、result.txtは空です。さらに何か教えて頂ける ことがありましたら、よろしくお願いします。
お礼
早速ご回答有難うございました。 私の場合>oldjavac -Xstdout GDraw.java > result.txt で、result.txt が出来ました。しかしエラーの指摘が7 件なのですが、SDK 1.3.1 で javac GDraw.java では 25件エラー指摘が出ます。この違いはどうして出るのか、ご存知でしたら、教えてください。