Bla*_*dez 14 java spring classpath
在我的应用程序中,我想使用文件夹中存在的资源 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();
Run Code Online (Sandbox Code Playgroud)
显示的错误是:
java.io.FileNotFoundException: class path resource [classpath:testMediaExif] cannot be resolved to URL because it does not exist
Run Code Online (Sandbox Code Playgroud)
如果我更改了该代码:
ClassPathResource resource = new ClassPathResource("testMediaExif");
Run Code Online (Sandbox Code Playgroud)
变量absolutePath采用以下值:
/Users/blanca/desarrollo/media/target/test-classes/testMediaExif
Run Code Online (Sandbox Code Playgroud)
为什么它指向目标路径?我怎么能改变它?
ska*_*man 17
有两个问题new ClassPathResource("classpath:testMediaExif"):
classpath:前缀仅在配置文件(如XML文件)使用,如果你使用不应该被用来ClasspathResource直接.classpath:testMediaExif 指的是类路径根目录中的资源,而不是相对于您正在进行引用的文件.试试这个:
new ClasspathResource("testMediaExif", getClass())
Run Code Online (Sandbox Code Playgroud)
要么
new ClasspathResource("testMediaExif", MyClass.class)
Run Code Online (Sandbox Code Playgroud)
这些将构建对testMediaExif相对于的资源的引用MyClass.
还有一件事: ClasspathResource.getFile()只在资源中工作才真正是一个文件.如果它被打包在JAR中,那么它将无法工作.
我的猜测是绝对路径问题是因为你的maven POM目标中的outputDirectory.在我的项目中,outputDirectory war/WEB-INF/classes,从这里开始执行类.如果我将其更改为某个垃圾值,则不再执行该类.
所以我相信绝对路径必须对.class文件的位置做些什么.希望这可以帮助 .
| 归档时间: |
|
| 查看次数: |
39069 次 |
| 最近记录: |