java によるiアプリの質問です~(;;)

以下のプログラムですが、どうしても com.nttdocomo.io.ConnectionException java.lang.NullPointerException の
エラーメッセージが出てしまいます。助けて下さい、、、


Image[] image=new Image[1];//イメージ変数
void exe(){ //実行部分

int i;

//イメージファイル読み込み
try {
MediaImage m;

for (i=0;i<2;i++) {
m=MediaManager.getImage("resource:///"+i+".gif");
m.use();
image[i]=m.getImage();
}

} catch (Exception e) {
System.out.println(e.getClass().getName());
}

g.lock();//描画開始

g.drawImage(image[0],5,140);

g.unlock(true);

}

回答の条件
  • 1人5回まで
  • 登録:2006/09/05 17:25:40
  • 終了:2006/09/06 11:45:27

回答(8件)

id:aiaina No.1

aiaina回答回数8179ベストアンサー獲得回数1312006/09/05 17:28:37

id:zachouR

あううう、、、すいません、、、エラーの原因がわかりません、、、。

2006/09/05 18:53:05
id:rokichan No.2

rokichan回答回数38ベストアンサー獲得回数02006/09/05 18:09:05

ポイント20pt

まずは

} catch (Exception e) {

System.out.println(e.getClass().getName());

}

の部分を

} catch (Exception e) {

e.printStackTrace();

}

に変更してエラーが発生している場所を詳しく洗い出しましょう。

その結果を提示してもらえるとあらためて回答できると思います。

id:zachouR

m=MediaManager.getImage("resource:///"+i+".gif");

m.use();

image[i]=m.getImage();

実行途中で調べてみると、m.uce();で止まる様です、、、。

2006/09/05 18:51:42
id:vector_xenon No.3

vector回答回数113ベストアンサー獲得回数42006/09/05 18:40:25

ポイント20pt

Image[] image = new Image[1]

なのにループで2回回してるからでは?


for (i = 0; i < 1; i++) {

----

}


つまりimage[0]しかないのにimage[1]まで参照してるってこと。

id:zachouR

すいません、、、違うようです、、、(;;)

image[1]をimage[2]にしても結果は変わりませんでした。



m=MediaManager.getImage("resource:///"+i+".gif");

m.use();

image[i]=m.getImage();

実行途中で調べてみると、m.uce();で止まる様です、、、。

2006/09/05 18:52:45
id:quintia No.4

quintia回答回数562ベストアンサー獲得回数712006/09/05 19:44:54

ポイント20pt

http://acerola.org/motokazu/iap/manual/Doja4.0/com/nttdocomo...

ConnectionException にはステータスが入っていて、getStatus() メソッドで取得できる様なので、それを表示して原因を探りましょう。


標準出力から確認できるならこんな感じに変更することになります。

catch (Exception e) {
  System.out.println(e.getClass().getName());
}

catch (com.nttdocomo.io.ConnectionException e) {
  System.out.println("status="+e.getStatus();
}

適切でなければ、ステータスを確認できる様にしてくださいね。


メッセージに出てくる status を確認して、JavaDoc の「フィールドの概要」のところにあるステータスの番号から、実際は何のエラーなのか? を確認してみましょう。

id:zachouR

ありがとうございます、無事解決致しました。

調べたところ、画像ファイルの名前がちがっていました、、、。お恥ずかしい限りです、、、。

今回の間違いで、チェックの仕方を学びました。今後もよろしくお願いいたします。

2006/09/06 11:37:02
id:nobuchiru No.5

ながの回答回数55ベストアンサー獲得回数32006/09/05 21:06:34

ポイント20pt

gが宣言されていないような気がするのですが?。

gは何のオブジェクトでしょう?。

gがnullなのだとすると、nullPointerExceptionを吐きますよね?。

上で言われているように、printStackTraceして、

なにがnullなのかを示していただくと、

よりわかりやすい回答が寄せられると思いますよ。

id:zachouR

gが原因では、ありませんでした。ソースを全部かけなかったので、、、。混乱させて申し訳ありません。

今度ともよろしくお願いいたします。ありがとうございました。

2006/09/06 11:39:57
id:hive7134 No.6

hive7134回答回数167ベストアンサー獲得回数162006/09/05 21:26:01

ポイント20pt

リソースフォルダ(resという名前のフォルダ)内に0.gifという名前の適当な画像ファイルはありますか?



まずは配列を使わないで挑戦してみてはいかがでしょう?

//イメージ変数
Image image;
void exe(){ //実行部分
	//イメージファイル読み込み
	try {
		MediaImage m = MediaManager.getImage("resource:///1.gif");
		m.use();
		image = m.getImage();
	} catch (Exception e) {
		// System.out.println(e.getClass().getName());
		e.printStackTrace();
	}
	g.lock();//描画開始
	g.drawImage(image, 5, 140);
	g.unlock(true);
}



その上で、(1.gifがあるか確認し、)

//イメージ変数
Image[] image = new Image[2];

void exe(){ //実行部分
	int i;
	//イメージファイル読み込み
	try {
		for(i=0; i<2; i++){
			MediaImage m = MediaManager.getImage("resource:///" + i + ".gif");
			m.use();
			image[i] = m.getImage();
		}
	} catch (Exception e) {
		// System.out.println(e.getClass().getName());
		e.printStackTrace();
	}
	g.lock();//描画開始
	g.drawImage(image[0], 5, 140); 
	g.unlock(true);
}

とやってみるとよいのではないでしょうか。

id:zachouR

わかりやすい解説ありがとうございました。

非常に助かりました。やっぱり、勉強しないといけませんね。

助かりました。今後ともよろしくお願いいたします。

2006/09/06 11:40:41
id:tsyk No.7

tsyk回答回数33ベストアンサー獲得回数42006/09/05 21:29:21

ポイント20pt

imageに確保した配列の長さが1個分しかないのに、

forループで2個目を入れようとしてるのが原因ですね。

配列の添え字は0から始まるので、image[0]とimage[1]ですが、

newで確保するときは個数を指定するので、[2]にします。

Image[] image = new Image[2];

id:zachouR

ファイル名が違っていただけでした、、、。こんなミスではてなを利用してしまいました、、、。恥ずかしいです(;;)

今後ともよろしくお願いいたします。ありがとうございます。

2006/09/06 11:41:29
id:ma-kanoh No.8

ma-kanoh回答回数155ベストアンサー獲得回数42006/09/06 00:09:54

ポイント20pt

http://dummy

要するに。

m=MediaManager.getImage("resource:///"+i+".gif");

のmがnullなのでは。

ということで

m=MediaManager.getImage("resource:///"+i+".gif");

>if ( m == null ) {

> continue;

>}

m.use();

にするとか。

id:zachouR

m.use()、やってみました。ミスの原因は違ったところでしたが、、、(;;)

今後の勉強について、nullなど非常に参考になりました。

今後もよろしくお願いします。Perlとは全く違った考え方でちょっと混乱しています(^^;)

ありがとうございました。

2006/09/06 11:44:25

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません