jar包中的类如何读取包内和包外的配置文件

最近将代码打包成jar包,关于如何处理读取配置文件的问题特此记录一下。

目录结构如下

  1. out.properties
  2. a.jar
  3. -com
  4. -a.class
  5. -in.properties

如上所示,out.properties是于a.jar包在同一文件目录下; 
in.properties是在a.jar包内部的。

关于a.class如何读取jar内或jar外的配置文件, 
如下所示:

Java代码

  1. FileInputStream inputStream1 = new FileInputStream("out.properties");
  2. InputStream inputStream2 = a.class.getResourceAsStream("/in.properties");

另外,Log4j的配置文件log4j.properties也可以放在和jar包同级目录下,会自动生效。

如果xml文件和jar包在同一目录下,那么和在classpath中没什么区别。可以直接读取、加载

时间: 2024-11-06 03:28:13

jar包中的类如何读取包内和包外的配置文件的相关文章

27 Java动态加载第三方jar包中的类

我加载的方法是://参数fileName是jar包的路径,processorName 是业务类的包名+类名public static A load(String fileName, String processorName) {            String filePath = fileName;              A processor = null;  URL url;try {  url = new URL(filePath);} catch (MalformedURLEx

关于java同步包中ConcurrentLinkedQueue类的深入分析与理解

一,官方描述 一个基于连接节点的无界线程安全队列.这个队列的顺序是先进先出.队列头部的元素是留在队列中时间最长的,队列尾部的元素是留在队列中时间最短的.新元素被插入到元素的尾部,队列从队列的头部检索元素.当许多线程共享访问同一个集合时,这个类是不二选择.这个队列不允许有null元素. 这个实现基于一种被描述为简单,快速,实用的非阻塞和阻塞公布队列算法而提供的一种有效的空闲等待算法. 注意,不像大多数集合,size方法的操作不是常量时间的,由于是异步队列,决定了元素的数量需要遍历真个元素集. 这个

解决idea中maven项目无法读取src/main/java目录下面的配置文件问题

解决idea中maven项目无法读取src/main/java目录下面的配置文件问题 当我们在maven项目中使用Mybatis的时候,需要给Mybatis配置核心xml文件(MyBatis-Config.xml)和映射文件(XxxMapper.xml),一般我们把映射文件和mapper(也就是dao层)放在同一层目录下. 但是在idea中创建maven项目的时候,会出现无法读取到mapper目录下对应的mapper.xml文件(因为项目在编译java目录下的文件时只会去编译.java文件):以

Java遍历包中所有类

PackageUtil 类 import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFile; /** * 获取包中所有的类 * @au

纯AS3项目中如何引用fl包中的类

fl包在Flash IDE中是独立的类库,在Flex中是无法直接引用的,那么如果Flex想要使用Flash IDE中fl包该怎么办呢? 需要在Flash IDE安装路径下,找到下面的flash.swc文件添加到Flex项目的libs中 C:\Program Files\Adobe\Adobe Flash CC 2015\Common\Configuration\ActionScript 3.0\libs\flash.swc 或者在文件 C:\Program Files\Adobe\Adobe F

java的NIO包中ByteBuffer类的clear(),flip(),rewind()方法的意思

我们要澄清一点:这三个方法都是ByteBuffer的抽象基类Buffer定义的方法,ByteBuffer只是继承了它们. **************************************************** 其次,你要理解缓冲区的概念,就是Buffer的意义:缓冲区是特定基本类型元素的线性有限序列.除内容外,缓冲区的基本属性还包括容量.限制和位置: 缓冲区的容量 是它所包含的元素的数量.缓冲区的容量不能为负并且不能更改. 缓冲区的限制 是第一个不应该读取或写入的元素的索引.缓

java学习--java.util包中常用类

java.util包被称为java工具包,里面包含大部分的工具类 Random 随机数类 new Random() rd.nextInt() rd.nextInt(100) Scanner 扫描器类 Scanner sc = new Scanner(system.in); String str = sc.next(); String str1 = sc.nextLine(); int t = sc.nextInt(); float t = sc.nextFloat(); Date 日期类 Dat

android.os包中一些类的使用(转)

android.os.Build Build.BOARD // 主板 Build.BRAND // android系统定制商 Build.CPU_ABI // cpu指令集 Build.DEVICE // 设备参数 Build.DISPLAY // 显示屏参数 Build.FINGERPRINT // 硬件名称 Build.HOST Build.ID // 修订版本列表 Build.MANUFACTURER // 硬件制造商 Build.MODEL // 版本 Build.PRODUCT //

[Java基础] 深入jar包:从jar包中读取资源文件

转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看下面的代码: //源代码1: package edu.hxraid; import java.io.*; public class Resource { public void getRe