JAVA获取CLASSPATH路径
网上搬来的
ClassLoader 提供了两个方法用于从装载的类路径中取得资源:
public URL getResource (String name);
public InputStream getResourceAsStream (String name);
这里name是资源的类路径,它是相对与“/”根路径下的位置。getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。
但是真正使用的不是ClassLoader的这两个方法,而是Class的 getResource和getResourceAsStream方法,因为Class对象可以从你的类得到(如YourClass.class或 YourClass.getClass()),而ClassLoader则需要再调用一次YourClass.getClassLoader()方法,不过根据JDK文档的说法,Class对象的这两个方法其实是“委托”(delegate)给装载它的ClassLoader来做的,所以只需要使用 Class对象的这两个方法就可以了。
因此,直接调用 this.getClass().getResourceAsStream(String name) ;获取流,静态化方法中则使用ClassLoader.getSystemResourceAsStream (String name) ; 。
下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径。
1.this.getClass().getResource("")
得到的是当前类class文件的URI目录。不包括自己!
如:file:/D:/workspace/jbpmtest3/bin/com/test/
2.this.getClass().getResource("/")
得到的是当前的classpath的绝对URI路径 。
如:file:/D:/workspace/jbpmtest3/bin/
3.this.getClass() .getClassLoader().getResource("")
得到的也是当前ClassPath的绝对URI路径 。
如:file:/D:/workspace/jbpmtest3/bin/
4.ClassLoader.getSystemResource("")
得到的也是当前ClassPath的绝对URI路径 。
如:file:/D:/workspace/jbpmtest3/bin/
5.Thread.currentThread().getContextClassLoader ().getResource("")
得到的也是当前ClassPath的绝对URI路径 。
如:file:/D:/workspace/jbpmtest3/bin/
6.ServletActionContext.getServletContext().getRealPath(“/”)
Web应用程序 中,得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。
如:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebProject
注意点:
1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。这是一颗定时炸 弹,随时可能要你的命。
2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI,URL,File对象。
3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。
4.绝对不要使用硬编码的绝对路径。因为,我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。如果你一定要指定一个绝对路径,那么使用配置文件,也比硬编码要好得多!
获得CLASSPATH之外路径的方法:
URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/
String path = new File(base.getFile(), "……/……/……/"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name
另外,如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。
相关推荐
### JAVA获取项目路径 在Java开发中,获取项目的路径是一个非常常见的需求,尤其是在处理文件读写、资源定位等场景时尤为重要。本文将详细介绍如何通过不同的方法来获取项目的各种路径,并结合示例代码进行说明。 ...
Java 项目中获取路径详解 在 Java 项目中,获取路径是非常重要的,因为它关系到项目的正确运行。特别是在 Java Web 项目中,...在 Java Web 项目中,获取路径变得更加复杂,需要注意编译后的目录和相对路径的关系。
在Java编程中,读取项目中的文件,特别是位于`src`目录下的文件,是一个常见的需求。这涉及到对项目结构的理解和使用Java I/O流的知识。`src`目录通常包含源代码文件,而运行时,这些文件会被编译并放置到类路径...
java操作Properties文件 获取项目当前目录 java操作Properties文件 获取项目当前目录 java操作Properties文件 获取项目当前目录 java操作Properties文件 获取项目当前目录
windows linux 下,获取java项目绝对路径的方法,struts2设置了struts.multipart.saveDir后会在根目录建立文件夹,这样会涉及linux下的权限问题
开发web工程时经常要获取工程的根目录,自己用Java实现的获取Tomcat下war包部署的Web工程根目录路径的方法,主要利用web工程默认的目录结构,此外也可以指定工程名称获取工程目录的绝对路径
此外,如果你需要获取项目的根目录,特别是对于桌面应用,可以考虑使用`System.getProperty("user.dir")`,这将返回执行Java命令时的工作目录,通常为项目的根目录。在Web应用中,由于类加载机制的不同,这种方法...
JAVA 文件中获取项目的相对路径 在 JAVA 文件中获取项目的相对路径是非常重要的,特别是在 JSP/Servlet 中。下面将详细介绍在 JAVA 文件中获取项目的相对路径的相关知识点。 1. 绝对路径和相对路径的概念 在讨论...
### JAVA 获取各种路径总结 在Java开发中,特别是在Web应用开发中,经常需要获取不同类型的路径,例如:当前Web应用的路径、特定文件的真实路径等。本文将详细讲解如何通过不同的方式来获取这些路径。 #### JSP中...
以上就是通过Java获取中国各地天气信息的基本流程,结合数据库操作,可以实现一个实用的应用程序。对于初学者来说,这涉及到了网络编程、数据解析和数据库操作等多个Java核心概念,是一个很好的学习实践项目。
这个名为"AudioDemo"的项目就是一个关于如何使用Java来获取音频文件播放时长的示例代码。在这个项目中,开发者可以学习到如何利用Java的内置库来解析音频文件的元数据,包括音频的总播放时间。 首先,我们要关注的...
在Java编程语言中,获取文件或文件夹信息是一项基本但至关重要的任务,它涉及I/O流、文件对象和相关的API。下面将详细讲解如何在Java中实现这一功能,并结合Eclipse IDE来导入和使用相关代码。 首先,我们需要了解...
在Java编程语言中,获取当前系统的详细信息是一项基础但重要的技能,它可以帮助开发者更好地理解运行环境,对于调试、日志记录以及系统兼容性检查尤为重要。本文将深入解析如何利用Java内置的`System`类和`...
标题提到的“JAVA获取文件编码格式”是一项常见的任务,特别是在处理来自不同来源的文本文件时。在这种情况下,我们可以利用第三方开源库来帮助我们完成这项工作。描述中提到了一个叫做"cpdetector"的工具,这是一个...
通过以上步骤,我们就可以成功地使用Java获取并解析JSON网页数据了。在实际项目中,可能还需要处理分页、错误重试、数据缓存等问题,这需要根据具体需求进行扩展。同时,为了提高性能和灵活性,还可以考虑使用其他库...
在Java编程环境中,获取USB外接设备的信息是一项重要的任务,特别是在物联网(IoT)和设备控制应用中。本文将深入探讨如何使用Java来检测、识别并获取USB设备的相关信息。 首先,我们需要理解Java中处理USB设备的基本...
"Java获取全国省市列表2016版.zip"这个压缩包文件很可能是提供了一个包含中国所有省份和城市的数据资源,供开发者在2016年时使用。下面将详细介绍如何在Java中处理这样的数据,以及可能遇到的相关知识点。 首先,...
以下是对如何使用Java获取USB设备信息的详细解释。 首先,我们需要了解USB设备的一些基本概念。USB设备通常由Vendor ID (VID) 和 Product ID (PID) 来唯一标识。VID是由USB组织分配给设备制造商的,而PID则是制造商...
以下是使用ffmpeg4java获取本地视频时长的步骤: 1. 添加ffmpeg4java库到项目中,可以通过Maven或Gradle引入依赖。 2. 初始化FFmpeg工具: ```java FFmpeg ffmpeg = FFmpeg.getInstance(); ``` 3. 创建一个File对象...