• ベストアンサー

「java.lang.NullPointerException」というエラー

アプレットを作っているのですが、コマンドプロンプトからappletviewerで実行すると、うまく動くのに、ブラウザでhtmlに貼って動かそうとすると java.lang.NullPointerException というエラーが出て、動いてくれません…。 エラーが出ている部分は、 File[] imagelist; File image = new File("imagesyukusyo");//imagesyukusyoはディレクトリの名前。 imagelist = image.listFiles() int yousosu; yousosu = imagelist.length;//ここでエラーが出ている という部分です。アプレットとhtmlファイルと同じディレクトリにimagesyukusyoフォルダがあって、そのフォルダの中に、いくつか画像ファイルが入っています。 よろしくお願いします。

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

  • ベストアンサー
  • shred
  • ベストアンサー率35% (25/70)
回答No.5

要はimageshukusho内の画像を変更してもアプレットを作り直さなくてもいい方法を模索しているのですよね。 appletタグの属性にパラメータを指定し、アプレットに渡すという行為も省きたいんですよね。 私だったら以下のようにするかもしれません。 phpなどによりimageshokusho内の画像の一覧を取得し、htmlに appletタグの属性にパラメータとしてファイル数とファイルを 動的に書き足す。 アプレットはファイル数がわかるので、この数だけファイルをパラメータ から取得する。 ローカル環境で学習中であるならばapache等のHTTPサーバとphpが必要となります。

nabewari
質問者

お礼

回答ありがとうございます。 >要はimageshukusho内の画像を変更してもアプレットを作り直さなくてもいい方法を模索しているのですよね。 appletタグの属性にパラメータを指定し、アプレットに渡すという行為も省きたいんですよね。 そうです。まさにそうなんです(笑)。 PHP、Apacheとの連携ですか…。全く考えもしませんでした。現在のサイトもパスワードなどつけるためにPHPを利用しようかと思っていたので(まだ、ほとんどPHPをやったことはありませんが)、PHPを利用するときに平行して勉強して、実現をはかろうと思います。 ですが、とりあえずは、仕方ないので妥協して、ファイル名を「順列の数字.jpg」にするとかして、ファイルの数をhtmlからパラメータで指定(というんでしょうか?)して実現しようと思います。

その他の回答 (4)

  • shred
  • ベストアンサー率35% (25/70)
回答No.4

>サーバー内のディレクトリを指定する方法というのは、別にあるんでしょうか? そもそもlistFilesはローカルファイルシステム上において 実現されるJavaAPIなので物理的に不可能です。 Applet#getImageでファイル取得して下さい。

nabewari
質問者

お礼

回答ありがとうございます。なるほど、こういうやり方では無理なのですね…。 (これもまた、別に質問を立てるべきなのかもしれませんが)listFilesのように、(getImageメソッドの第二引数目のように)ファイル名を指名しなくても、あるディレクトリの中のファイルを全て取得するようなやり方はあるでしょうか?もしよければよろしくお願いします。m(_ _)m

  • ARIA9
  • ベストアンサー率37% (3/8)
回答No.3

サーバ内のディレクトリというか、jarファイル内に含んでない画像ファイルをWebサーバから取得するのであればhttp接続で取得する必要があります。 ※HttpURLConnectionクラスあたりを参照 ところで、現状はclassを指定してアプレットを起動していますか? だとしたら、jarファイル内にimagesyukusyoを作って、画像ファイルを入れておいてアプレットをjarファイルから起動するようにしておけばFileクラスで読み込めるかもしれません。 ちょっと確認できる環境にないので、間違っていたら申し訳ございません。

nabewari
質問者

お礼

回答ありがとうございます。 jarファイルを作って、その中にディレクトリとファイルをセットで入れてみたのですが、実行できませんでした…。 やはり無理のようですね……。

  • shred
  • ベストアンサー率35% (25/70)
回答No.2

imagelistがnull、つまりオブジェクトを参照していない状態で lengthメソッドを呼び出そうとしているのがエラーだと思います。 これ↓に原因があるのでは? File image = new File("imagesyukusyo"); サーバー内のディレクトリを指定しているつもりだと思いますが ローカルのディレクトリを指定していると思います。 アプレットビューワーであればローカルのディスクを読み出すことは可能ですがインターネットから取得するアプレットはセキュリティのためにローカルのディスクは読み書き出来ません。

nabewari
質問者

お礼

回答ありがとうございます。 >サーバー内のディレクトリを指定しているつもりだと思いますが ローカルのディレクトリを指定していると思います。 そうなのですね…。完全にサーバー内のディレクトリを指定しているつもりでした。「imagesyukusyo」は一応アプレットが入っているディレクトリにあるディレクトリの名前なのですが… サーバー内のディレクトリを指定する方法というのは、別にあるんでしょうか?(これはまた別に質問をしたほうがいいんでしょうか?)

  • maoo2022
  • ベストアンサー率59% (110/185)
回答No.1
nabewari
質問者

お礼

回答ありがとうございます。 まだちょっと私の知識不足のせいで、解決にはならなさそうです…

関連するQ&A