質問編集履歴

1 IntelliJ IDEAのエディション表記が抜けてたので追加

white__green

white__green score 1

2017/08/05 17:54  投稿

java getResource()で下位パッケージのファイルを参照したい
###前提・実現したいこと
前提としてプロジェクトのパッケージ配置が以下のようになっているものとします
sample
├resources
│└img1.png
├packA
│└Source.java(public class Source{})
├Main.java(public class Main{})
└img2.png
このとき、Sourceクラスからの相対パスでimg1.pngをgetClass().getResource()で参照する方法が知りたいです
Mainクラスからの相対パスでgetClass().getResource()で参照できることは確認しました
Sourceクラスからの相対パスで参照しようとするとIDEのデバッガ上(パスを確認すると普通のファイルパス)ではきちんと動きますが、
ビルドしてjarをたたくと(パスを確認すると ~.jar!\~ になるような)getResource()でnullが帰るようです
実現したいことはimg1.pngを参照することなのですが、img2.pngを参照しようとしても同じエラーが出ることを確認しました
なにか方法があれば教えてください
###該当のソースコード
```java
public class Source{
   public Source(){
       URL url = Main.class.getResource("resources/img1.png").toString();//これで参照できることは確認しました
   }
}
```
↑だと正常に動くのですが、
```java
public class Source{
   public Source(){
       URL url=getClass().getResource("../resources/img1.png").toString();//直接参照したい
   }
}
```
↑だとgetResource()でnullが帰るようです
###試したこと
getResource()の引数は思いつく限り試しました
"./../resources/img1.png",
"/../resources/img1.png",
"../resources/img1.png" など
###補足情報(言語/FW/ツール等のバージョンなど)
jdk 1.8.0_112
IntelliJ IDEA 2017 2.1
IntelliJ IDEA Community 2017 2.1
  • Java

    16225 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る