ClassPathResource没有获取类路径

在我的应用程序中,我想使用存在于文件夹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")有两个问题new ClassPathResource("classpath:testMediaExif")

  1. classpath:前缀仅用于配置文件(例如XML文件),如果您直接使用ClasspathResource ,则不应使用它。
  2. classpath:testMediaExif是指classpath:testMediaExif根目录中的资源,而不是相对于您在其中进行引用的文件。

试试这个:

 new ClasspathResource("testMediaExif", getClass()) 

要么

 new ClasspathResource("testMediaExif", MyClass.class) 

这些将构建对相对于MyClass名为testMediaExif的资源的testMediaExif

还有一件事: ClasspathResource.getFile()只能在资源中工作,实际上是一个文件。 如果它被打包在JAR中,那么它将无法工作。