Maven项目中获取classpath和资源文件的路径



假设资源文件放在maven工程的 src/main/resources 资源文件夹下,源码文件放在 src/main/java/下, 那么java文件夹和resources文件夹在运行时就是classpath的真实位置,如果

有一个文件位于 src/main/resources/test.txt

有一个类位于 src/main/java/com/qunar/MyClass.java

FILE_NAME = "test.txt"

通过如下代码

MyClass.class.getClassLoder().getResource(FILE_NAME).getPath();

可以直接获取文件路径

而classpath可以通过如下代码获取

MyClass.class.getClassLoder().getResource("").getPath();

 

还有一种方法可以通过当前类的加载路径使用相对路径来获取资源地址

MyClass.class.getResource(FILE_NAME).getPath()

那么这种就会有问题,因为此时的路径是相对于MyClass这个类在运行时路径而言的,test.txt和MyClass并不在一个层级,因为MyClass之前还有两个包

可以如下解决

MyClass.class.getResource(File.separator + "FILE_NAME").getPath(); // 这种方法相当于使用绝对运行时路径

MyClass.class.getResource(".." + File.separator + ".." + File.separator + FILE_NAME).getPath(); // 这种方法相当于使用相对MyClass的运行时路径
时间: 2024-11-04 00:40:57

Maven项目中获取classpath和资源文件的路径的相关文章

Maven项目无法获取Sonatype Nexus中SNAPSHOT的包

今天在一个Maven项目中调用某个包的SNAPSHOT版本,总是提示找不到该jar包,主仓库使用了局域网中的Sonatype Nexus服务器,项目pom.xml相关配置如下:  <project>    <repositories>      <repository>        <id>nexus</id>        <name>Local Nexus Repository</name>        <u

在.net中创建并使用资源文件(1)

在.net中,可以创建资源文件(.resx)供程序使用,可以在资源文件中加入图片.字符串等自定义资源.以便在程序中使用这些文件.下边就我们就创建一个名为Skins.resx的资源文件,在里面装载一些程序UI需要的资源,以便绘制程序界面. 首先我们新建一个Windows程序(Windows Application),在Form1_Load中加入以下代码: ResXResourceWriter rw = new ResXResourceWriter("Skins.resx"); //ski

eclipse maven项目中一个war类型的项目加载进tomcat时,只加载了WEB-INF

问题描述 eclipse maven项目中一个war类型的项目加载进tomcat时,只加载了WEB-INF 我遇到这样一个问题,我有一个maven的项目,其中有一个war类型的子模块,当我想在tomcat7上面运行时,我查看了其下面的项目,发现仅仅是加载了WEB-INF文件夹里面只有classs文件也就是只有java跟resource中的东西没有webapp文件夹下的内容,甚至连其下面的web.xml文件都没有加载进来,JSP及其他文件夹都没有加载..

maven 项目中pom依赖到其他pom【A】,如何递归下载这个pom【A】中的依赖包?

问题描述 maven 项目中pom依赖到其他pom[A],如何递归下载这个pom[A]中的依赖包? 用maven管理的项目,其中引入了 org.apache.hadoop hadoop-yarn ${hadoop.version}pom 但是这个GAV定位到的是一个POM文件,此文件中包括了一堆modules 如下 hadoop-yarn-apihadoop-yarn-commonhadoop-yarn-serverhadoop-yarn-applicationshadoop-yarn-site

虚拟路径-jetty部署的项目,如何将项目中要下载的资源,统一放置在项目外的一个路径

问题描述 jetty部署的项目,如何将项目中要下载的资源,统一放置在项目外的一个路径 如题:为了优化项目,现在要将项目内需要下载的资源,如:表格.图片等,统一放置在硬盘上的一个固定的目录上,该如何做呢,是要设置jetty.xml文件吗,jetty.xml文件在哪个位置,为什么我找不到?

mfc-VC6.0中MFC编程有关资源文件的问题?

问题描述 VC6.0中MFC编程有关资源文件的问题? VC6.0中为什么打不开资源文件,也就是rc文件,只能用TEX打开,可是这样很不方便啊? 解决方案 可以啊 例如想编辑对话框,或其它的资源,是可以打开资源窗口的. 你的打不开,你是如何 操作的呢? 解决方案二: 是不是rc文件损坏了,造成编译器不能正确解析. 解决方案三: 应该是rc文件出现问题了吧

snapshot-请问,用maven项目中,在pom.xml配置如下信息是配置的什么?

问题描述 请问,用maven项目中,在pom.xml配置如下信息是配置的什么? com.exampleexample-common1.0-SNAPSHOT 解决方案 请百度maven基础.

maven项目中的libraries中没有maven dependencies

问题描述 maven项目中的libraries中没有maven dependencies 解决方案 你把Libraries点开看一下,应该会有的.如果没有,试试这个:项目 -- 属性 -- Deployment Assembly -- Add -- Java Build Path Entries -- 选择 Maven Dependencies -- Finish -- OK 解决方案二: Maven项目没有Maven Dependencies目录maven项目不显示Maven Dependen

url-?求问:structs项目中,如何执行删除文件操作URL且不发生跳转

问题描述 ?求问:structs项目中,如何执行删除文件操作URL且不发生跳转 我想在web端执行删除文件操作,一开始想参考表单验证中, url:'', success:funtion(){} 但未能成功,于是使用了window.location.href,结果删除功能确实实现了,但删错操作后,页面总是会跳转到一个空页面上. 求问各位大神有什么办法,给个提示.谢谢! js代码: window.location.href = 'deleteFile?id='+rs[0].data.fileId;