• 締切済み

nullのエラー

C:\game\sound\Sound.classというプログラムを実行しようとすると「Exception in thread "main" java.lang.NullPointerException」というエラーがでました。 SoundクラスでSoundの値にnullを使っていません。 これをc:\desktop\sound\Sound.classという風にプログラムの入ったファイルをフォルダごと移動させて実行させると無事に実行できました。 調べてみると、C:\game\waveというフォルダにSound.classという同じ名前のプログラムがあり、こちらのプログラムの中のSoundクラスのSoundの値でnullを初期値設定している部分がありました。 geme--т--sound------soundクラス-----null値なし⇒実行できず     |--wave-------soundクラス-----null値あり geme-----wave---soundクラス-----null値あり desktop--sound---soundクラス-----null値なし⇒実行できた 自分なりに考えたのは、Javaの場合、同じプロジェクトの中で異なるパッケージにあるプログラムでも、public宣言しているものは参照してしまうということなのかと考えました。 このような考え方であっているのでしょうか。

  • beeds
  • お礼率77% (17/22)
  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

タイトルと質問の内容が一致していないわね。 答えは既に経験していると思うけど Yesよ。 Javaはパッケージが異なっても 同じ名称のクラスを作成することができるわ。 CoreのAPIで例を挙げれば Listクラスね。 例えば java.util.List java.awt.List の2つがあるわ。 もしも両パッケージがimportされてしまうと 本文の中でListと記述するときjavaはどっちのパッケージなのか 判断することができないのよ。 その場合は面倒でも本文で java.util.List myList = ~ のように記述してあげる必要があるわ。 また、まったく同じパッケージで同じクラスがCLASSPATHに指定されてることもあるわね。 同じ内容ならいいけど、中身が異なっている場合は注意が必要よ。 優先度は・・・ 調べれば判るから省略。

beeds
質問者

お礼

質問をうまく書けずにすみません。 回答ありがとうございました。

関連するQ&A

  • エラーの原因がわかりません。

    パッケージdiglibに含まれているTriangleクラスとパッケージdigに含まれているCalcDigクラスを用いて三角形の面積を表示するプログラムについてです。 (CalcDigがメインクラスです。) javac dig¥CalcDig.javaでコンパイルしたところエラーなくできたのですが、 java dig.CalcDigで実行したところ、 「エラー:メイン・クラスdig.CalcDigを検出およびロードできませんでした。」 と表示されました。 何が原因なのでしょうか? digフォルダにCalcDigのjava,classファイルを、diglibフォルダにTriangleのjava,classファイルを入れています。

  • nullについて

    public class Test0 { public static void main(String[] args) { String str="x"; str=null; if(((Object)str).equals(null)) { System.out.println("ok"); } else { System.out.println("out"); } } } を実行するとエラーになります str=null; をコメントアウトするとエラーでなくなります クラスオブジェクトがnullに等しいかどうか をするときにたとえそのオブジェクトがnullであっても エラーにならないようにするにはどうしたらいいのでしょうか? (tryは使用しない方法でおねがいします) また String x; とした直後にxはnullなのでしょうか? String以外に一般のクラスについてもお願いします

    • ベストアンサー
    • Java
  • C#でゲーム制作中のエラー

    C#でゲームを制作しているのですが、プログラムに以上はないですがプログラムを起動するとキャラクターと敵が動いてるときに他のオブジェクトクラスで「値をNullにすることが出来ません」とのエラーが出てきて、何をどう直せばよいのかよく分からないのでプログラムで教えていただきたいです。わかりやすいプログラムと説明を待ってます。お願いします><

    • ベストアンサー
    • Xbox
  • オブジェクト指向 集約の実装について

    例えば、 学校クラス--学年クラス--学級クラス--班クラス というクラスがあった場合、それぞれのクラスには集約といわれる関連があると思いますが、この場合の実装は一般的にどのようにされているのでしょうか。 自分の考えでは、 class Gakko { vector<Gakunen> GakunenObj; }; class Gakunen { vector<Gakkyu> GakkuObj; }; class Gakku { vector<Han> HanObj; } class Han { void ShowName(); } このように学校クラスが消えれば内包される学年クラス・学級クラス・班クラスも消える必要があるので、オブジェクトの寿命を親のクラスと同じにするため、各クラスに子クラスのインスタンスを持たせています。 この方法だと班の名前を表示したい場合、 Gakko Obj; Obj.GakunenObj[a].GakkuObj[b].HanObj[c].ShowName(); といった感じでアクセスすることになると思います。 ただ、こんな長たらしいプログラムコードを見たこともありませんし、実際は通常の関連としてクラスのポインタを持たせた方がいいでしょうか。 突っ込みどころ満載ですが、よろしくお願い致します。

  • 違うクラスからの変数の共有化

    一つのクラスの中にある変数の値を、二つの別なクラスから呼び出して、その二つのクラスのどちらから変数を参照しても同じ値が帰ってくるようにしたいのですが、いろいろ調べてもできなかったので質問させていただきますm(_ _)m // 共有化させたい変数を持つクラス // Var.java public class Var{  public static int i;  public Var(int i){ this.i = i; }  public Var(){}  public static void getI(){   return i;  } } //クラス1 //Class1.java public class Class1{  Var var = new Var(1); } //クラス2 //Class2.java public class Class2{  Var var = new Var();  System.out.println(var.getI()); } とした場合、Class1を実行し、次にClass2を実行すると、クラス1で定義した変数の値である 1 が戻ってくるようにしたいのですが、上記の方法では、Class2を実行すると結果は 0 になってしまいました。 まだまだ習い始めたばかりでいまいちstaticを使い切れていないと思います・・・ たとえば、PrintStreamクラスの public static final PrintStream out というのはどこから参照しても同じ結果なのでそのようなやり方で大丈夫だろうと思ったのですが・・・ このような方法では共有化させることはできないのでしょうか?またできないのでしたらほかのやり方がもしあった場合は教えていただきたいと思います。 どうかお願いします。

    • ベストアンサー
    • Java
  • copyコマンドについて

    単純にバッチファイルを使って、ファイルのコピーをしたいのですが、以下の内容で実行してもうまくいきません。 (Wave サウンド.wav ファイルをC:\Program Filesのフォルダの中にコピーをしたい) どうしたら、うまく動くのか教えてください。 {batファイルの内容} copy C:\Documents and Settings\Administrator\デスクトップ\Wave サウンド.wav C:\Program Files

  • どういうエラーなのかわかりません…

    私は、雛形の作られたJavaプログラムを改変したことがあるだけで、まだ基本的なことはほとんど分かっていない初心者です。 下記のプログラムについて質問なのですが…。 public class Program{  public static void main(String args[]){   short s = 456;   System.out.println("s is " + s);  } } というプログラムを作り実行したところ、”クラスProgramはpublicであり、ファイルProgram.javaで宣言しなければなりません。”とエラーが出てきました。 しかし、どこで何を宣言すればいいのかがどうしても分かりません。 これは、どこをどう直せばよいのでしょうか? 初歩的な質問ですが、どうしても分からなくて困っています。どうか、よろしくお願いします。

    • ベストアンサー
    • Java
  • 実行できません・・・

    パッケージdiglibに含まれているTriangleクラスとパッケージdigに含まれているCalcDigクラスを用いて三角形の面積を表示するプログラムについてです。 (CalcDigがメインクラスです。) javac dig¥CalcDig.javaでコンパイルしたところエラーなくできたのですが、 java dig.CalcDigで実行したところ、 「エラー:メイン・クラスdig.CalcDigを検出およびロードできませんでした。」 と表示されました。 何が原因なのでしょうか? digフォルダにCalcDigのjava,classファイルを、diglibフォルダにTriangleのjava,classファイルを入れています。

    • ベストアンサー
    • Java
  • パッケージ関連のエラー

    パッケージが含まれるプログラムでのエラーの要因は何がありますか? コンパイルはできたんですが、 エラー:メイン・クラスdig.CalcDigを検出およびロードできませんでした。 と表示されます。 何度も見返しましたが、 ソースコードに書かれたパッケージと同じフォルダに入れてある 名前も間違ってない java フォルダ名.メインクラス名で実行している です。

  • Java、実行時にエラーになります。

    class test14 { public static void main(string args[]) { byte b; int i = 258; b = (byte)i; System.out.println(b); //2を表示する } } C:\WORK>javac test14.java C:\WORK>java test14 エラー: メイン・クラスtest14を検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: test14 いつも教えてもらってばかりですいません。 上記のプログラム、コンパイル出来ましたが 実行時、エラーになります。 どうしてでしょうか? 教えてください。 ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • Java

専門家に質問してみよう