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")
:
-
classpath:
前缀仅用于配置文件(例如XML文件),如果您直接使用ClasspathResource
,则不应使用它。 -
classpath:testMediaExif
是指classpath:testMediaExif
根目录中的资源,而不是相对于您在其中进行引用的文件。
试试这个:
new ClasspathResource("testMediaExif", getClass())
要么
new ClasspathResource("testMediaExif", MyClass.class)
这些将构建对相对于MyClass
名为testMediaExif
的资源的testMediaExif
。
还有一件事: ClasspathResource.getFile()
只能在资源中工作,实际上是一个文件。 如果它被打包在JAR中,那么它将无法工作。
- 我是否需要客户端,服务器和注册表上的所有类才能使用RMI?
- 有没有办法判断类路径资源是文件还是目录?
- 执行JAR时java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
- Mac上的CLASSPATH,以及Mac如何寻找mysql-connector-java-bin.jar
- ClassNotFoundException在修改后的SimpleShortestPathsVertex上运行GiraphRunner
- 如何将图标作为类路径资源添加到使用WindowBuilder创建的SWT窗口中?
- Java类存在于类路径中,但启动失败,错误:无法找到或加载主类
- 又一个Ant + JUnit类路径问题
- Java Manifest文件的类路径以及它如何确定相对dirs