1

NetBeansプロジェクトがあります。プロジェクトディレクトリに、リソース(画像)を保持するための追加のディレクトリをいくつか作成しました。したがって、私の画像の1つのパスは「/res/imgs/on.png」です(「res」とその中のすべては私によって作成されます)。次に、プロジェクトのソースに「res」ディレクトリを追加しました(「NetBeans」->「プロパティ」->「ソース」->「フォルダの追加」(「ソースパッケージフォルダ」セクションの場合)でプロジェクトを右クリックします)。そして、次のコードを使用して、プロジェクト内の画像のURLにアクセスしました。

URL url = Class.class.getResource("/imgs/on.png");

そして、これは成功しました-ほんの数日前。今日、このコード実行後、url変数はnullに設定されました。しかし、コードがこれに変更されたとき:

URL url = Class.class.getResource("/imgs");

(url!= null)はtrueでした。

次に、さらに別のプロジェクトを作成しました。ここでは、まったく同じ操作を実行しました(つまり、プロジェクトフォルダーにサブディレクトリを作成し、それにいくつかのファイルをロードして、私が作成したものと同様のコードを実行しようとしました。その上)。そして、これらの操作は成功しました。その後、最初のプロジェクトに戻りました( "/imgs/on.png"にアクセスしようとするとURLがnullに初期化されました)。そして、すべてが再び正常になり、画像のURLが正常に読み込まれたことが判明しました...

それで、問題は、何が問題だったのかということです。これはNetBeansのバグですか、それとも間違った方法で何かをしているのでしょうか。

4

1 に答える 1

2

おそらく一部のNetbeansのコンパイル/クリーングリッチにより、「on.png」はclassesディレクトリになかったため、クラスパスに見つかりませんでした。再起動またはNetbeansがソースフォルダを再スキャンする原因となる操作の後、そこに戻りました。

ちなみに、代わりにClass.class.getResource()呼び出し元のクラスを使用する必要があります。たとえばthis.getClass().getResource()、同じクラスローダーを使用します。

于 2013-02-09T13:26:07.073 に答える