私のアプリケーションでは、フォルダmedia/src/main/resources/testMediaExif
に存在するリソースを使用したいと思います
そのパスを取得するために、media/src/main/Java/com/project/MyClass.Java
にある次のコードを使用しました。
ClassPathResource resource = new ClassPathResource("classpath:testMediaExif");
File file = resource.getFile();
String absolutePath = file.getAbsolutePath();
表示されるエラーは次のとおりです。
Java.io.FileNotFoundException: class path resource [classpath:testMediaExif] cannot be resolved to URL because it does not exist
そのコードを変更した場合:
ClassPathResource resource = new ClassPathResource("testMediaExif");
変数absolutePathは次の値を取ります。
/Users/blanca/desarrollo/media/target/test-classes/testMediaExif
なぜターゲットパスを指しているのですか?どうすれば変更できますか?
私の推測では、絶対パスの問題は、Maven POMのターゲットのoutputDirectoryが原因です。私のプロジェクトでは、outputDirectory war/WEB-INF/classesと、ここからクラスが実行されます。ジャンク値に変更すると、クラスが実行されなくなります。
だから絶対パスはあなたの.classファイルの場所で何かをする必要があると思います。お役に立てれば 。
new ClassPathResource("classpath:testMediaExif")
には2つの問題があります。
classpath:
_接頭辞は構成ファイル(XMLファイルなど)でのみ使用され、ClasspathResource
を直接使用している場合は使用しないでください。classpath:testMediaExif
_は、参照しているファイルからの相対位置ではなく、クラスパスのルートにあるリソースを指します。代わりにこれを試してください:
_new ClasspathResource("testMediaExif", getClass())
_
または
_new ClasspathResource("testMediaExif", MyClass.class)
_
これらは、testMediaExif
に対してMyClass
というリソースへの参照を構築します。
もう1つ:ClasspathResource.getFile()
は、実際にはファイルであるリソースでのみ機能します。 JARにパックされている場合、機能しません。