Jar包内读取配置文件

1. 获取Jar包的相对路径

关于此话题,网上众说纷纭。经尝试,下面的方法是OK的。

1. xxx.class.getResource("filename")

这里的filename是基于xxx的class文件的相对路径。如果filename写“”,返回.class文件的路径。

2. xxx.class.getResource("/filename")

这里的filename是不依赖于xxx的绝对路径的,也就是以jar包所在目录为相对路径。如果参数写的是“/”,返回null。

无论是1,还是2,调用.getFile()获得的路径名称,(一般里面都有个感叹号,)以参数传入File类似的构造方法都是无效的,比如传送给spring的ClassPathXmlApplicationContext。如果想读取,需要使用getResourceAsStream,绕过File,以流的方式读取。(URI的方式没有尝试)

不要直接调用Classloader的getResource方法,不论是从哪个类里面getClassLoader得到的。

2. ClassPathXmlApplicationContext调用的时候报告找不到文件

如果xml文件成功打到jar包里面,肯定是在classpath中的。解决找不到文件的方法是解压jar包,查看xml文件在jar包中的组织方式,同时构造函数的参数不要以“/”开头,应该使用相对路径。

时间: 2024-12-29 13:18:01

Jar包内读取配置文件的相关文章

[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

java 从jar包中读取资源文件

在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java.io.*; public class Resource { public  void getResource() throws IOException{ File fil

(转)java 从jar包中读取资源文件

(转)java 从jar包中读取资源文件 博客分类: java 源自:http://blog.csdn.net/b_h_l/article/details/7767829 在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:Java代码 [java] view plaincopy //源代码1: package edu.hxraid; import java

【解惑】深入jar包:从jar包中读取资源文件

我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看下面的代码: //源代码1: package edu.hxraid; import java.io.*; public class Resource { public void getResource() throws IOException{ File file=new File("bin/res

Java实现动态修改Jar包内文件内容

import java.io.*; import java.util.Enumeration; import java.util.LinkedList; import java.util.List; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarOutputStream; /** * jarPath: jar包所在路径 * jarFilePath: jar中想要修改文件所在

从jar包中读取资源

package myspider; import java.io.UnsupportedEncodingException; /** * * @author mark */ public class Test { public static void main(String[] args) throws UnsupportedEncodingException{ Test t=new Test(); //文件名前不加"/",则表示从当前类所在的包下查找该资源.如下则表示的是从包mysp

关于在Websphere下程序找不到jar包内.properties文件的问题

问题描述: 最近在测试V3.1.1时,发现AM部署在websphere下程序会提示找不到jar包内的 *.properties 文件问题 程序写法类似如下: this.getClass().getResource("/xxxxxxx.properties") (这种写法在tomcat下可行) 问题原因: 在tomcat和websphere 下类加载方式实现不一样 导致的 已经按照以下方式在Websphere下进行测试,均行不通: Thread.currentThread().getCo

Java读取其他jar包里的配置文件

最近要做个东西,需要自己控制数据库的事物,项目封装的框架,实在是提不起去阅读的兴趣, 就想直接去读框架的底层实现里面的数据连接的配置文件(如:Url,port,username,password等), 使用JDBC创建数据连接,拿到Connection后,事物就好办了. 找到在一个A.jar包里面的根目录,有配置文件B.properties,里面有需要的配置. 难点就来了,Properties可以加载src下面的properties文件,直接prop.load(this.getClass().g

运行jar包时读取jar里面的文件

在开发过程中,我们经常会遇到读取配置文件的情况,对于配置文件的读取,根据环境等情况又各有不同,一般情况下,如果从非jar包中使用相对/路径,比较简单,就不在累述了,而在很多 情况下,我们需要把我们的class打包成jar文件,进行使用,这时就会发现,我们先前如果没有考虑到这些,可能就行不通了,那么,该如何解决呢?方法如下 : 有如下路径 : Web-info--|-->classes--->jdbc.properties |-->lib 此时加 入我们需要读取jdbc.propertie