Javaプログラム実行時に「bad constant pool index for fieldDescriptor」というエラーが発生する原因とは?

このQ&Aのポイント
  • Javaプログラムを実行する際に「bad constant pool index for fieldDescriptor」というエラーメッセージが表示されます。
  • これは、定数プールのインデックスが不正であることを示しています。
  • このエラーは、フィールドの記述子に対する定数プールのインデックスが正しくない場合に発生します。
回答を見る
  • ベストアンサー

実行するとよくわからないエラーがでる

これを実行すると import java.lang.Integer; import java.lang.NumberFormatException; import java.lang.String; import java.lang.System; public class Animal { public static void main(String[] A00) { final int L00 = 6; int L01 = 0; int L02 = 0; int L03 = 0; if (A00.length < 3) { System.out.println("使用例 >java Animal 1969 6 26"); System.exit(1); } try { L01 = Integer.parseInt(A00[0]); L02 = Integer.parseInt(A00[1]); L03 = Integer.parseInt(A00[2]); } catch (NumberFormatException L04) { System.out.println("生年月日には数字を指定してください。"); System.exit(1); } int L05 = (L01 + L02 + L03) % L00; System.out.printf("%d年%d月%d日生まれのあなたは...%n", L01, L02, L03); switch (L05) { case 0: System.out.println("穏やかな心をもったヒツジです。"); break; case 1: System.out.println("おっとりマイペースのコアラです。"); break; case 2: System.out.println("自分が一番のライオンです。"); break; case 3: System.out.println("孤独が大好きなオオカミです。"); break; case 4: System.out.println("お調子者のサルです。"); break; case 5: default: System.out.println("不思議な性格のタスマニアンデビルで す。"); break; } } } # guarantee(_name_index != 0 && _signature_index != 0) failed: bad constant pool index for fieldDescriptor とエラーがでるのですが これはどういう意味でしょうか?

  • Java
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#147388
noname#147388
回答No.2

たぶん IDE で起動しているとおもうんですが 別プログラムを起動しているとおもわれます。 後はこちらを参照してください。 http://javaroad.jp/bbs/answer.jsp?q_id=20110729072110297

その他の回答 (1)

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

試してみましたが,普通に実行できています。 C:\javasrc>java Animal 使用例 >java Animal 1969 6 26 C:\javasrc>java Animal 1969 6 26 1969年6月26日生まれのあなたは... 孤独が大好きなオオカミです。

関連するQ&A

  • javaのエラーが回収できない

    JAVA初心者です。下記のエラーを直したいんですがよくわかりません。 Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at hangman.main(hangman.java:141) ソースを載せたいのですが200行程度あって全部載せられないので 関連しそうなところだけ載せます。 ~~~~~~~~~略~~~~~~~~~~~ try{ int input=System.in.read(); char str_moji1=(char)input; //ユーザの1文字入力 if(words[chosenWordRecord].indexOf(str_moji1) != -1){ System.out.println("debug:"+str_moji1+"の場所"+(words[chosenWordRecord].indexOf(str_moji1)+1)); } else{ System.out.println(str_moji1+"は含まれてないよ!"); } for(int arrayNum=0; arrayNum<wordArray.length; arrayNum++){ if(wordArray[arrayNum]==str_moji1){ System.out.print(" "+str_moji1); } else{ System.out.print(" _"); } } }catch(IOException e){ System.out.println(e); } try{ System.out.print("入力テスト:"); BufferedReader br1=new BufferedReader(new InputStreamReader(System.in)); String str=br1.readLine(); step=Integer.parseInt(str); //int型に変換 }catch(IOException e){ System.out.println(e);            //141行目 } ~~~~~~~~~略~~~~~~~~~~~ 状況としては、 ユーザの入力によって2つのテキストファイルを順にコマンドライン上に 表示しようとしているのですが1つ目のファイルから単語を呼んで処理を終えた後に、 2つ目のファイルを呼ぶための入力ができなくなっているようです。 かってに数字以外の文字が入力されてしまっているということでしょうか? エラーで指定された場所にcatch(NumberFormatException e){}も追加してみましたが ただエラーが表示されなくなるだけでした。 ちなみに変数はすべて宣言してあります。 解決方法ご存知の方いましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVAのプログラムについて

    今、JAVAを始めたのですが、どうしても分からないところがあるので教えていただきたいのですが・・・・ +と- と言う文字をキーボードから入力して、switch文で判断したいのです。 ソースは String s3 = bufreader.readLine(); 上記でキーボードから文字列を取得して、 switch(s3){ case '+': int c = Integer.parseInt(s1) + Integer.parseInt(s2); System.out.println(c); break; case '-': int d = Integer.parseInt(s1) - Integer.parseInt(s2); System.out.println(d); break; } スイッチ文で、+と言う文字と-の文字だったとき、それぞれ画面に表示させたいのですが、うまくいきません。 多分、文字列でゲットしてきたものをswitch文は使えないからだと思うのですが・・・・ すみません。もし宜しければ、教えてください。お願いします。

    • ベストアンサー
    • Java
  • javaじゃんけんゲーの質問

    このjavaじゃんけんゲームで 0を押すまでじゃんけんが続いて0押したら終了して、終了と表示して、じゃんけんの勝敗が表示されるように作りたいんですけどどうしたらいいですか?教えてください import java.io.*; class kadai6 { public static void main(String args[]) throws IOException { System.out.println("これは、じゃんけんゲームです。"); System.out.println("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー、0:終了)さぁどれにしますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res =Integer.parseInt(str); switch(res){ case 1: System.out.println("あなたの手はグーです。"); break; case 2: System.out.println("あなたの手はチョキです。"); break; case 3: System.out.println("あなたの手はパーです。"); break; default: System.out.println("あなたの入力した値はエラーです。1~3の値を入力してください。"); System.exit(1); break; } int comp = (int)(Math.random()*3) + 1; switch (comp){ case 1: System.out.println("コンピュータの手はグーです。"); break; case 2: System.out.println("コンピュータの手はチョキです。"); break; case 3: System.out.println("コンピュータの手はパーです。"); break; default: System.out.println ("エラーです。"); break; } switch (res -comp) { case -2: System.out.println("コンピュータの勝ちです。"); break; case -1: System.out.println ("あなたの勝ちです。"); break; case 0: System.out.println ("あいこです。"); break; case 1: System.out.println ("コンピュータの勝ちです。"); break; case 2: System.out.println("あなたの勝ちです。"); break; default: System.out.println ("エラーです。"); break; } } }

  • JAVAの初心者です。

    import java.io.*; class Sample1 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("1:入力文字整数確かめ"); System.out.println("2:終了"); String hako = br.readLine(); int sen = Integer.parseInt(hako); switch (sen){ case 1: System.out.println("整数を入力してください。"); String hako2 = br.readLine(); int hako3 = Integer.parseInt(hako2); if ((hako3%2)==0){ System.out.println("これは偶数ですね。"); } System.out.println("奇数ですね。"); break; case 2: System.out.println("終了いたします。"); break; } }while(sen != 2); } } 上記のように組んだのですが、}whileのところでエラー が出てしまうのです。 これってなぜなのでしょう?? 初心者特有の質問かもしれませんがご教授いただけたら嬉しいです。宜しくお願いいたします。 関係ないのかも知れませんがJDK1-5-006を使用してます。

    • ベストアンサー
    • Java
  • どこに・・・

    import java.io.*; class janken { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー)?\n"); String str = br.readLine(); int a = Integer.parseInt(str); switch(a){ case 1: System.out.println("あなたの手はグーです。"); break; case 2: System.out.println("あなたの手はチョキです。"); break; case 3: System.out.println("あなたの手はパーです。"); break; default: System.out.println("1~3を入力してください。"); break; } { int ran = ((int)(Math.random()*3)+1); int b=ran; switch(b){ case 1: System.out.println("コンピュータの手はグーです。"); break; case 2: System.out.println("コンピュータの手はチョキです。"); break; case 3: System.out.println("コンピュータの手はパーです。"); break; } int c; c=a-b; if(c == 2){ System.out.println("勝ち"); } else if(c== -1){ System.out.println("勝ち"); } else if(c==0){ System.out.println("あいこ"); } else if(c==1){ System.out.println("負け"); } else { System.out.println("負け"); } } } } いまjavaの勉強をしており、練習をかてね上のようにじゃんけんのプログラムを書きました。今の段階で、一様動くのですが、一回ごとにじゃんけんが終了されてしまいます。そこで繰り返し文のwhile(a != x)を使って数値を入力したら終了するように考えているんですが、whileをどこに入れたらいいのかがわかりません・・・ 自分でいろんなところに入れて試して見たんですが、無限ループになったりして、終了してくれません。どこにwhileを入れたらいいのでしょうか?それてもwhileじゃないほうがいいのでしょうか?アドバイスお願いします。

    • ベストアンサー
    • Java
  • Java言語のプログラムをC言語にする場合

    次の2つのJava言語のプログラムをC言語にしたいのですが、C言語でプログラムを書いたことがありません。C言語にする場合はどう書けばいいのでしょうか? import java.io.*; public class Sort { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("整数値を入力してください"); String line = reader.readLine(); int a = Integer.parseInt(line); String line2 = reader.readLine(); int b = Integer.parseInt(line2); String line3 = reader.readLine(); int c = Integer.parseInt(line3); String line4 = reader.readLine(); int d = Integer.parseInt(line4); int[] data = {a, b, c, d}; for (int i = 0; i< data.length - 1 ; i++) { for (int j = i + 1; j< data.length; j++) { if(data[i] > data[j]) { int e = data[i]; data[i] = data[j]; data[j] = e; } } } System.out.println("昇順に並べ替えると、"); for (int i = 0; i< data.length; i++) { System.out.print(data[i] + " "); } System.out.println("です。"); } catch (IOException e){ System.out.println(e); } catch (NumberFormatException e) { System.out.println("数式の形式が正しくありません。"); } } } import java.io.*; public class Yakusu { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.println("2つの整数値を入力してください"); System.out.print("整数A : "); String line = reader.readLine(); int a = Integer.parseInt(line); System.out.print("整数B : "); String line2 = reader.readLine(); int b = Integer.parseInt(line2); if(a%b == 0){ System.out.println("BはAの約数です"); } else { System.out.println("BはAの約数ではありません"); } } catch (IOException e){ System.out.println(e); } catch (NumberFormatException e) { System.out.println("数式の形式が正しくありません。"); } } }

  • 構文がエラーになる

    Exception in thread"main"java.lang.NoClassDefFoundError という文章でエラーになります。 import java.io.*; class Sample34 { public static void main (String args[])throws IOException { System.out.println("整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res = Integer.parseInt(str); if(res == 1){ System.out.println("1が入力されました。"); } else if(res == 2){ System.out.println("2が入力されました。"); } else{ System.out.println("1か2を入力してください。"); } } }

  • エラー(互換性の無い型)

    はじめましてsunoftaiyoと申します。このカテゴリでは初めての質問です。 これからどうぞよろしく御願いします。 早速なのですが tokuten.txtという30個の数字が羅列されたテキストを読み込み、合計点と平均点を表示するプログラムについてなのですが import java.io.*; public class yomikomi03 { public static void main(String[] args) throws IOException { try{ BufferedReader br = new BufferedReader(new FileReader("tokuten.txt")); String tokuten[] = new String[29]; String t[] = new String[29]; int a=0; for(int i=0;i<29;i++) { tokuten[i] = br.readLine(); t[i] = Integer.parseInt(tokuten[i]); } for(int j=1;j<29;j++) { a = a + tokuten[j]; } int b = a/30; System.out.println("合計点は" + a); System.out.println("平均点は" + b); } catch(FileNotFoundException e) { System.out.println("ファイルが見つかりません。"); } } } というソースでコンパイルすると yomikomi03.java:14: 互換性のない型 検出値 : int 期待値 : java.lang.String t[i] = Integer.parseInt(tokuten[i]); ^ yomikomi03.java:18: 互換性のない型 検出値 : java.lang.String 期待値 : int a = a + tokuten[j]; ^ とでます。どのように対処すればよいでしょう?

    • ベストアンサー
    • Java
  • 例外の文法について

    失礼します。 JAVAを始めて約一ヶ月が経とうそしているのですが、表題にある例外の文法「try~catch」のところでご教授願いたいことがあります。 なにぶん初心者なのでテキストを見ながらとりあえずそのまま写して実行して動作確認して・・・という手法をとっていたのですが、下記の例題が実行できずに困っています。 どうしても途中の int number = Integer.parseInt(args[0]); の部分で止まってしまい、解決策が見つからず八方塞りです。 ぜひご教授願いますよう宜しくお願いいたします。 <例題> import java.io.*; public class Ren25 { public static void main(String args[]){ try{ int number = Integer.parseInt(args[0]); System.out.println(number); }catch(NumberFormatException e){ System.out.println("数字じゃないとダメです:"); } } }

  • countに実行した回数をいれたいです。

    javaのカウント回数について質問させて頂きます。 ユーザーから数字を入力した回数をint countに格納して 表示したいのですがコンパイルは通りますが実行できません。 elseの中にSystem.out.printlnした文字も表示されずどうやら elseを通ってなくatr[i]にも値が格納されてないようです。 調べた限りではわからなく宜しければアドバイスやご指摘をお願い致します。 import java.io.*; import java.util.Arrays; class last { public static void main(String[] args) throws IOException { int atr[]; atr = new int[25]; int count = 0; int your_plan[][] = new int[300][144]; //1日のスケジュール String dayplan; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ //絶対に通る System.out.println("数字を選択してください。"); String str = br.readLine(); int res = Integer.parseInt(str); if(res == 0){ System.out.println("選択終了です。"); break; } else{ atr[count] = res; } count++; System.out.println(count); }