`
soeight
  • 浏览: 8354 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java获取ClassPath

    博客分类:
  • J2SE
 
阅读更多
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")当前用户目录的相对路径。这是一颗定时bomb,随时可能要你的命。

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获取CLASSPATH路径的方法详解

    本文将详细解析如何在Java中获取`CLASSPATH`路径,并介绍相关的方法和技术。 首先,`ClassLoader`类是Java中负责加载类和资源的核心组件。它提供了两个方法来获取资源: 1. `public URL getResource(String name)`...

    java实现获取指定路径下指定格式的所有文件

    java实现 获取指定路径下 指定格式 的所有文件

    java classloader classpath 张孝祥

    ### Java ClassLoader与ClassPath详解 #### 一、概述 在Java编程中,类加载机制是十分关键的一个环节。类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath...

    java classpath 配置详细讲解

    ### Java Classpath 配置详解 #### 一、前言 对于初学Java的朋友而言,配置Java环境常常是一项艰巨的任务,尤其是如何正确设置`classpath`。这篇文章将通过一系列实际操作来详细阐述`classpath`的配置过程,帮助...

    Java中获取类路径classpath的简单方法(推荐)

    在Java编程语言中,了解如何获取类路径(classpath)是至关重要的,因为类路径决定了Java虚拟机(JVM)在运行时如何查找和加载类。本文将详细介绍在Java中获取类路径的几种常见方法,以供开发者参考。 首先,类路径...

    Path和classpath配置详解

    在Java编程环境中,路径(Path)和类路径(Classpath)是两个至关重要的概念,它们对程序的编译和运行起着决定性的作用。本文将深入解析这两个概念,并结合源码和工具,帮助你理解它们的工作原理。 首先,让我们来...

    java项目中获取路径详解

    Java 项目中获取路径详解 在 Java 项目中,获取路径是非常重要的,因为它关系到项目的正确运行。特别是在 Java Web 项目中,获取路径变得更加复杂。下面我们将详细讨论 Java 项目中获取路径的方法和注意事项。 ...

    如何安装java JDK以及正确设置CLASSPATH系统变量

    ### 如何安装Java JDK及正确设置CLASSPATH系统变量 #### 1. 预备常识 ##### 1.1 安装 JDK 首先,需要访问官方的Java网站(http://java.sun.com)来获取适用于您操作系统的最新版本的JDK。以撰写本文时的情况为例...

    Java中的classpath

     运行程序的时候,可以通过参数 -cp,或者-classpath来重新指定classpath,而不必从环境变量中获取。这也是让不同的应用程序使用不同的classpath的好的办法。  比如,命令  java -classpath c:class

    基于获取JAVA路径,包括CLASSPATH外的路径的方法详解

    在Java编程中,获取Java路径以及CLASSPATH外部的路径是非常关键的操作,尤其当需要加载类、资源文件或进行系统级操作时。这篇文章主要探讨了几种获取这些路径的方法。 首先,我们来看一下如何获取Java路径。Java...

    java获取tomcat端口.doc

    ### Java 获取 Tomcat 端口及服务器IP的相关知识点 #### 一、获取服务器IP地址和端口 在Java环境中,获取服务器的IP地址和端口对于开发人员来说非常重要,尤其是在部署应用程序或处理网络通信时。以下是几种常见...

    怎样配置java环境变量path和classpath及其作用定义.pdf

    ### 如何配置Java环境变量Path和Classpath及其作用 #### 一、概述 在Java开发过程中,正确配置环境变量对于确保编译器和解释器能够正常工作至关重要。本文将详细介绍如何配置`Path`和`Classpath`这两个重要的环境...

    java文件路径获取

    ### Java 文件路径获取方法详解 #### 一、引言 在Java开发中,经常会遇到需要获取文件路径的情况,尤其是在处理配置文件、图片等资源时。本文将详细介绍Java中获取文件路径的各种方法及其应用场景,帮助开发者更好...

    总结一下java获取路径几种途径

    在Java中,获取路径是操作文件和目录时的基本需求。正确地获取和使用路径对于文件的创建、读取、写入等操作至关重要。本篇总结将从多个角度介绍Java中获取路径的方法。 ### 1. 获取系统属性路径 Java提供了一种...

    java读取项目中的文件(src目录下)

    - 在运行Java程序时,JVM会查找类路径(Classpath)中定义的路径来加载类和其他资源。`src`目录下的文件在构建后会被包含到Classpath中。 3. **使用Java I/O流读取文件**: - Java提供了一系列的I/O流类来处理...

    Java动态编译Java代码,运行在内存中,并执行

    获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 * 4.创建DiagnosticCollector用来执行获取执行失败的错误结果 * 5.添加动态执行的编译环境 options ...

    Java连接Oracle数据库的各种方法

    配置Java环境以连接Oracle数据库,需要安装Sun JDK,并确保PATH环境变量指向JDK的bin目录,CLASSPATH环境变量指向JDK的lib和Oracle的JDBC接口。对于不同类型的JDBC驱动,配置也略有不同。例如,对于JDBC Thin,只需...

    opencv-java480.dll windows 64 opencv-java480.jar下载

    下载后,需要将`opencv-java480.jar`添加到项目的类路径(classpath)中,这样Java编译器和运行时环境才能找到并加载这个库。 使用OpenCV的Java API,开发者可以创建图像处理和计算机视觉的应用。例如,你可以加载...

    Java或web中解决所有路径问题

    本文将深入解析Java Web中所有路径问题的解决方法,涵盖Servlet、Action、Controller、Filter、Listener等关键组件的路径获取技巧,以及Spring框架下Web应用根目录的获取策略。 ### 一、理解Java Web中的路径类型 ...

Global site tag (gtag.js) - Google Analytics