0

私はNetBeansを使用して画像をプログラムにロードしていますが、これまでのところ、すべての画像をsrc /images/に保存してきました。これは問題ありませんでした。しかし、すべてのパッケージ名を大文字にしたかったので、大文字になるようにすべてをリファクタリングしました。そのため、「画像」は「画像」になりました。これを反映するようにすべてのファイルパス文字列を変更しましたが、次にプログラムを実行したときに、どの画像も読み込まれませんでした。プロジェクトのビルド部分にimagesという別のフォルダーがあり、必要な画像がいくつか含まれているので、srcimageフォルダーから/build / classes / imagesフォルダーにすべてをコピーすると、奇跡的に再び機能し始めました。この時点まで、私はすべての画像をsrc /images/セクションに配置してきました。

では、実際に何が起こっているのでしょうか。プログラムに必要なすべての新しいイメージを/build/ classes / imagesまたは古い場所に保存し始める必要がありますか?画像読み込みコードが今、まったく別の場所を探すことにしたのはどういうことですか?そして、なぜ画像フォルダの2つのバージョンがあるのですか?これは、NetBeansが生成する奇妙なことですか?

ImageIO.read(myClass.class.getResource("/images/myClassImg.png");
4

2 に答える 2

1

リソースファイルは、jar内のすべての.classファイルと一緒にパックできます。そして、それはファイルシステム上のファイルではありません。その結果、パス名では大文字と小文字が区別され、パス区切り文字として「/」が使用されます。一般に、リソースURLでは大文字と小文字が区別されます。

その上には「/Images/myClassImg.png」があるはずです。

ただし、大文字のパッケージ名を使用することは、非常に一般的な規則に反します。

于 2013-03-21T20:23:19.397 に答える
0

GetClass()関数が動作するはずです。も使用できますgetAbsolutePath()

Image I = ImageIO.read(getClass().getResource("/images/myClassImg.png"));
于 2013-03-22T13:49:59.490 に答える