调用jar包外配置文件.doc_第1页
调用jar包外配置文件.doc_第2页
调用jar包外配置文件.doc_第3页
调用jar包外配置文件.doc_第4页
调用jar包外配置文件.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目中,经常把一部分功能独立出来,做一个java project,然后打成jar包供其他项目引用。这时候,如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采用jar包读取外部配置文件。案例:项目工程名:auth - 很明显,做鉴权使用的项目配置文件:perties perties 很明显是读取数据库配置的,perties就不解释啦driver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:34:1530:billdbuser=dwpasswd=dw123testsql=select sysdate from dual项目引用jar包:lib/servlet-api.jarlib/log4j-1.2.15.jar lib/commons-collections-3.1.jar lib/commons-logging-1.0.4.jar lib/commons-pool.jar lib/ojdbc14.jar读取配置文件示例:public class Config private static Properties properties;private static Logger logger = Logger.getLogger(Config.class);static try properties = new Properties();/ 读取SRC下配置文件 - 属于读取内部文件properties.load(Config.class.getResourceAsStream(/perties); catch (IOException e) logger.error(读取配置信息出错!);public static String getObject(String prepKey) return properties.getProperty(prepKey);public static void main(String agrs) (Config.getObject(testsql);目录结构如下:解决方案I:自定义 manifest.mf 文件a. 在项目下新建文件 manifest.mf,内容如下:Manifest-Version: 1.0Class-Path: lib/servlet-api.jar lib/log4j-1.2.15.jar lib/commons-collections-3.1.jar lib/commons-logging-1.0.4.jar lib/commons-pool.jar lib/ojdbc14.jar解释:Manifest-Version: 1.0 版本号,没啥特殊含义,但一定要有;Class-Path: 所有引用的jar包注意:每个“:”后面都要加空格,Class-Path中每个jar包间也加空格最后一行为空行截图如下:b. 通过Eclipse 到处jar包右键项目工程-Export -选择Java下 JAR File,下一步选择工程的src目录(其他的lib,.setting都不选中),去掉两个配置文件的选项(配置文件外部读取),选择导出jar包的位置;注意:右侧的.classpath这些都不要选中,只把src下的java文件打包。下一步下一步:选中自定义的manifest.mf文件,完成测试:新建项目,导入刚刚生成的jar包和jar需要的所有包(把jar包所在工程lib下所有引用jar拿过来),在src下写入配置文件,目录结构如下:测试:public class Demo1 /* * param args */public static void main(String args) System.out.println(Config.getObject(testsql);ConnectionUtil.main(null);测试结果:log4j:WARN No such property datePattern in org.apache.log4j.RollingFileAppender.select sysdate from dual14:07:15,297 INFO ConnectionUtil:87 - = 当前系统日期是:2011-07-26 12:00:00这就是方案1,总结:自定义 manifest.mf 文件,配置清楚jar所需要的所有lib。当其他系统引用该jar时,相当于把包拉到系统中(jar的内容相当于系统自定义的),它读取的配置文件就是从系统的classpath下读取。方案II:定义配置文件的绝对路径a. 工程src下新建目录config,存放配置文件;(以前都是直接存放在src目录下的);目录结构如下:b. 修改获取配置文件的方式,代码如下: public class Config private static Properties properties;private static Logger logger = Logger.getLogger(Config.class);static try PropertyConfigurator.configure(System.getProperty(user.dir) + /config/perties); properties = new Properties();/ 读取SRC下配置文件 - 属于读取内部文件/ properties.load(Config.class.getResourceAsStream(/perties);/ 读取系统外配置文件 (即Jar包外文件) - 外部工程引用该Jar包时需要在工程下创建config目录存放配置文件String filePath = System.getProperty(user.dir)+ /config/perties;InputStream in = new BufferedInputStream(new FileInputStream(filePath);properties.load(in); catch (IOException e) logger.error(读取配置信息出错!,e);public static String getObject(String prepKey) return properties.getProperty(prepKey);public static void main(String agrs) (Config.getObject(testsql);看代码:设置perties的位置PropertyConfigurator.configure(System.getProperty(user.dir) + /config/perties);设置perties的位置String filePath = System.getProperty(user.dir)+ /config/perties;导出项目jar包:同上面的导出方式,只导出src下的java文件(config,lib等不选)使用默认生成的manifest.mf文件导出成功。在项目中引用,同上面的一样,但是在引用项目中,需要在src目录下创建config目录才存放配置文件,目录结构如下:同样测试成功。总结:System.getProperty(user.dir) 获得项目的绝对路径,然后拼装配置文件的路径。参考日志:/blog/910993/question/106339_15212/u/20101105/11/56efadd4-8e70-4a6c-8765-bb4d54b73517.html/blog/1026839如何读取JAR包外的properties文件及打成jar包后无法读取到jar包内的properties文件 2011年06月21日 星期二 19:24打成jar包后无法读取到jar包内的properties文件发现在eclipse里一切正常,但打成jar包后就无法读取到properties文件了。之前的程序是这样获取配置文件的:Thread.currentThread().getContextClassLoader().getResource().getPath() +filename+.properties) 来获取properties文件,但发现一运行就报错.后来将代码改成:this.getClass().getClassLoader().getResourceAsStream(filename+.properties)一切正常关于java 的 classloader 还是有点概念不清,需要补补以下内容转载自:/blog/910993一般在项目中使用properties配置文件的时候都将相关的properties文件放在src目录下,在将该app打包生成jar后,相应的properties配置文件生成在jar包中,这样的话要修改配置文件又要重新打jar包,那是相当的麻烦。 既然这么麻烦,你肯定想将配置文件放在其他的目录下,生成的jar包内不包含相应的配置文件,修改配置文件无需重新打包,没错,下面就是一种解决方案了。读取jar包内配置文件:InputStreamin=this.getClass()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论