ClassPathResource does not get the classpath

故事扮演 提交于 2019-12-03 19:09:23

问题


In my application, I would like to use a resource that exist in a folder media/src/main/resources/testMediaExif

To get that path, I used this piece of code, located in media/src/main/java/com/project/MyClass.java:

ClassPathResource resource = new ClassPathResource("classpath:testMediaExif");
File file = resource.getFile();
String absolutePath = file.getAbsolutePath();

The error shown is:

java.io.FileNotFoundException: class path resource [classpath:testMediaExif] cannot be resolved to URL because it does not exist

If I change that code:

ClassPathResource resource = new ClassPathResource("testMediaExif");

The variable absolutePath takes this value:

/Users/blanca/desarrollo/media/target/test-classes/testMediaExif

Why does it point to the target path? How could I change it?


回答1:


My guess is that the absolute path issue is because of the outputDirectory in the target of your maven POM . In my project the outputDirectory war/WEB-INF/classes and the it is from here the classes get executed . If I change it to some junk value , the class no longer gets executed .

So I believe the absolute path has to do something with the location of your .class files . Hope this helps .




回答2:


There are two problems with new ClassPathResource("classpath:testMediaExif"):

  1. The classpath: prefix is only used in config files (e.g. XML files), and should not be used if you're using ClasspathResource directly.
  2. classpath:testMediaExif refers to a resource in the root of the classpath, not relative to the file in which you're making the reference.

Try this instead:

new ClasspathResource("testMediaExif", getClass())

or

new ClasspathResource("testMediaExif", MyClass.class)

These will construct a refernce to a resource called testMediaExif relative to MyClass.

One more thing: ClasspathResource.getFile() will only work in the resource really is a file. If it's packed in a JAR, then it won't work.



来源:https://stackoverflow.com/questions/8725149/classpathresource-does-not-get-the-classpath

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!