java mainメソッドの正常・異常の判定方法
- javaプログラムにおいてmainメソッドの正常・異常の判定方法について質問があります。
- javaのプログラムではmainメソッドはvoidと決められており、復帰値で判断することができません。
- ジョブスケジューラなどのアプリケーションから実施する場合にはどのように判定するのか悩んでいます。
- ベストアンサー
java mainメソッドの正常・異常の判定について
基本的な質問で大変お恥ずかしいのですが、どうぞ回答宜しくお願いします。 javaのプログラムではmainメソッドはvoidと決められてしまっていますが、 それではプログラムが正常に動いたか、異常だったかという判定は普通どのようにするものなのでしょうか?復帰値で判断することができないので困っています。 たとえばUNIX上でtestというjavaプログラムを実行するとして、 ”java test”とコマンドで実施します。 Cで作成された復帰値を返却するタイプのプログラムなどですと、 実施直後に”echo $status”とコマンドを発行すると復帰値が確認できますが、 javaプログラムだと確認できないですよね? ジョブスケジューラなどのアプリケーションから実施する場合などについても、 プログラムの正常・異常判定をどのようにしたらいいのか悩んでいます。 一般的?にはどのような判定を行うものなのか、どなたかご教授ください。 宜しくお願いします。
- echo2002
- お礼率80% (17/21)
- Java
- 回答数1
- ありがとう数5
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
mainメソッドの戻り値はvoidですが、 プログラムの終了時に明示的にSystem.exit()することで判定できるとおもいます。exit()メソッドにステータスとなるintを(正常なら0、異常なら1など)を与えたり。
関連するQ&A
- Javaで
C言語ではUNIX上のコマンドを呼ぶには System("呼びたいコマンド");とすればコマンドがプログラムから呼べたと思います。Javaで同じようにUNIX上のコマンドを呼ぶ関数(メソッドっていうのかな?)はなんですか?
- 締切済み
- その他([技術者向] コンピューター)
- java のメソッドの使い方について
現在のjavaの勉強しております。 そこでフィールドについてどうしてもわからないことがあったので質問させていただきます。 他クラスのメソッドを利用したい時、通常インスタンス化を行いますが、下記のようにフィールドに宣言しても、他クラスのメソッドを利用できることに疑問を感じました。 public class Test{ public String show(){ ~~ return null; } } //Testクラスのshowメソッドを呼び出します public class Test2{ private Test test_; public String triaezu(){ String str = test_.show(); ~~ … このようにフィールドにもつ呼び出しとインスタンス化をして呼び出す方式とは一体何が違うのでしょうか? プログラムの先輩方、基礎的なことすぎて申し訳ないのですが、どうかご教授ください。
- ベストアンサー
- Java
- 【Java】親クラスでMainメソッドの出力
Javaについてです。 コマンドライン引数を複数渡し、数値の判定をtry/catchで行う。 catchメソッドには「stringFlg = true;」のみ。 渡ってきた値が数字のみの場合は、数値*数値の文字数を出力し、 数字のみでない場合は文字列を逆から1文字ずつ出力する。 上記のプログラムを下記のように変更したいです。 Testクラスで別パッケージのTest2クラスを継承し、Test2のLogメソッドを呼び出す。 引数で渡ってきた値をMainメソッドでコンソールに出力していたところを Logメソッドでコンソールに出力する。 Mainメソッドを呼びだそうとするとコンパイルエラーが起きる上に、 Mainメソッド内でLogメソッドをどこで呼び出せばいいのかイマイチ分かりません。 教えて下さい。 現時点のソースコードです。 package Test; import Test2.Test2; public class Test extends Test2 { public static void main(String[] args) { Test2 Log = new Test2(); boolean stringFlg = false; for (String arg : args) { try { int num = Integer.parseInt(arg); int nums = num * arg.length(); Log.Log(); stringFlg = false; } catch (NumberFormatException e) { stringFlg = true; }if(stringFlg){ char[] chars = arg.toCharArray(); for (int i = chars.length - 1; i >= 0; i--){ char str = chars[i]; Log.Log(); } } } } } package Test2; import Test.Test; public class Test2 { public void Log() { Test2 test2 = new Test(); System.out.println(test.main(args[0])); //コンパイルエラー } }
- 締切済み
- Java
- Javaの初期化メソッドについて
こんにちは。Javaの初心者です。 Javaの初期化メソッド(initメソッド)についてなのですが、処理を記述しても実行してくれません。 恐らく使い方が間違ってるかと思われるのですが、ネットで調べてもあまり検索結果がでてこなかったので、質問させてもらいました。 以下サンプルコード import java.lang.*; public class Test { static int a; public void init() { a = 10; } public static void main(String[] args) { System.out.println(a); } } 実行してみても、「0」と表示されるだけで、「10」と表示してくれませんでした。 どこかコードが間違えてるのでしょうか? それとも初期化メソッドはアプレット用であってアプレットで使わないと意味がないというものなのでしょうか? 因みに関係ないかと思われますが、グローバル変数は自動的に初期化される(0が代入される)ということは知っています。 ご教授の方、よろしくお願い致します。
- ベストアンサー
- Java
- 単体テスト仕様書[正常系/異常系]書き方
こんにちは、単体テスト仕様書作成初心者のものです。 ・正常系と異常系について ・メソッドからメソッドを呼び出すケースの書き方 について質問です。 1.正常系、異常系について 仮に引数 obj1 インスタンスフィールドに格納されている objA を使用して処理を行い結果を返すメソッドがあるとします。 (フィールド変数は初期化時にセットする) 正常系は、obj1,objAともに正常値で期待される結果処理が行われるかということは理解できるのですが、 異常系とは、Nullがくることは考えられない時に、obj1がnullがきた場合、objAがnullの場合などをさすのでしょうか? 異常系というのは何の異常なのかいまいちわかりません。 仮に、プログラム上で引数にNUllが想定されている場合は、正常系ということになるのでしょうか? 1.NULLがくることは想定されていないけど、その処理のテストケースは異常系 2.NULLがくるケースはあるので、その処理のテストケースというのは正常系 というような感じでしょうか? ちなみにファイルを読み込むときにパス上にファイルがないというのは 異常系?ということでしょうか 2.メソッドからメソッドを呼び出すケースの書き方 メソッドAの中でメソッドb、メソッドcを呼び出す処理があったとき、 メソッドbの異常系でエラーを投げた場合、メソッドAでも同条件でエラーがスローされるというような記述は必要なのでしょうか? 例がわかりにくくすいません。 ご存知の方や、このサイトにそれらしいことが書いてあるなどを 教えていただければと思います。
- 締切済み
- Java
- mainメソッドの引数
Javaのプログラミングを練習しています。 下記のような問題があり、プログラムを組んでみたのですが 何か足りないようで思うような処理ができません。 ご教授頂けたら幸いです。 宜しくお願いします。 main()メソッドの引数で指定された名前のファイルに、キーボードから入力された内容を1行ずつ(上書きモードで)書き込むプログラムを作成して下さい。 (キーボードからの入力内容がない(空文字列の)場合にはプログラムを終了させて下さい) ただし、引数の個数が1個でない場合には「ファイル名を正しく指定して下さい」と表示して、プログラムを異常終了させて下さい。 又、処理の途中で例外が発生した場合には、発生した例外の内容を表示して、プログラムを異常終了させて下さい。 import java.io.*; public class Sample101 { public static void main(String[] args) { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); try{ PrintWriter fout = new PrintWriter(new BufferedWriter(new FileWriter("text1.txt"))); System.out.print("ファイルに書き込む文字列を入力して下さい >"); String s1 = br.readLine(); fout.println(s1); fout.close(); } catch(Exception e){ System.out.print("ファイル名を正しく指定して下さい"); System.exit(1); } } }
- ベストアンサー
- Java
- メインメソッド無しでJavaを実行する方法
Javaにメインメソッドってあるじゃん。public static void main(string[] args){;}でお馴染みのアレです。 Javaを実行するには、javaコマンドの引数に.classファイルのファイル名を指定するよね。んで、その.classファイルにメインメソッドを含んでいる必要があって、Javaを実行するにはメインメソッドが必須だそうです。このように、参考書やWEBなどあちこちに書いてあります。 しかし、メインメソッド必須というのは、厳密には間違いなんだそうです。メインメソッドが無くてもJavaを動かす裏ワザがあると、↓のブログに書いてありました。(基本はメインメソッドだとは思うのですが) http://blogs.wankuma.com/kacchan6/archive/2007/07/24/86663.aspx ここにプログラムがザックリ書いてあったのですが、本当に動くんですか? public class MimeticMain{ static boolean init = caller(); public static boolean caller(){ System.out.println("main()が無くても動く"); return true; } } -- これを動かすと、「main()が無くても動く」と表示するんですかね。私がやると、エラーになっちゃったのですが。 エラー: メイン・メソッドがクラスMimeticMainで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) ーー あと、staticイニシャライザーを使うと、メインメソッドが無くても動くと、冒頭に書いてあります。自分なりに調べて書いてみたんですが、エラーですね。 public class MimeticMain{ public static void mMain(){System.out.println("main()が無くても動く");} static{mMain();} } メインメソッドが無くても動くって、本当?そのコードを書けますか?10行50ワード以下の簡単なプログラムで良いと思いますが。 2007年のブログらしく、当時の古いバージョンのJavaならば動くのかしら?Javaも仕様がどんどん変わっていて、バージョンアップするとメインメソッド必須になったのかしら?
- ベストアンサー
- Java
- Javaにおけるメソッド名・ライン数取得に関して
Javaの実行コンソールにて、メソッド名・ソースのライン数を出力させたいと思ってます。 C言語でいう、__func__や、__LINE__のように、 下記のように、System.out.println()内に埋め込み、それを出力させたいのです。(下記では、不明箇所をxxxとさせて頂いております。) <ソース-TestClass.java-> public void main(){ Test(); return; } private static void Test(){ System.out.println("メソッド名["+xxx+"] ライン["+ xxx +"]"); return; } <実行ターム> > java TestClass > メソッド名[Test] ライン[14] Javaではそういったメソッド名やライン数などの取得は困難なのでしょうか?または、そういったAPIは用意されておりますでしょうか? ご存じの方いらっしゃいましたら、ご教授お願い致します。
- 締切済み
- Java
- どのメソッドだっけ?
javaのプログラム内でコマンドを実行するメソッドってなんでしたっけ? C言語でいうところの、systemみたいなやつです。 system(cat hoge.txt)とかってやるとcat hoge.txtガ実行されるじゃないですか(こまかい文法はぬき)これをjavaで実行するにはどうすればいいの?
- 締切済み
- Java
- クラスメソッドの問題
春から情報系の大学に行くためjavaについて勉強しているのですが分からない問題が出てきたので質問します。 問題 1からnまでの奇数の和を求めるプログラムsumple.javaと和を計算するためのクラスメソッドSum及び結果を表示するためのクラスメソッドdisplayを用いて作成する。 Sumの戻り値と因数はともにint型とする。 なおdisplayの戻り値はvoid型、因数はint型が2つとする。 nの入力はコマンドライン引数を利用する 実行例 $ java sumple.java コマンドライン引数がありません! $ java sumple.java 100 1から100までの奇数の和は2500です。 このようになるのですがそのように作ればよいか全然わかりません。 回答お願いします
- 締切済み
- Java
お礼
maicalさん お返事遅くなってすみません。 System.exit()は知らなかったので早速調べてみます。 回答ありがとうございました。