java 的配置文件问题 为了增加系统的灵活性和易移植性,我想通过读取外部资源文件(proterties文件)的方式来获取信息,比如数据库的连接信息如何能让jar文件读取当前目录下的配置文件信息呢,请大家帮个忙吧,试了很多种方式都不行啊 先谢谢各位大牛们了 O(∩_∩)O~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 当然没问题了,我觉得还是xml好,可以实现 复杂的需求 能说下怎么实现的吗,xml文件格式的也行 给个例子参考下, 好吗 多谢了 proterties文件在JAR包中,还是与JAR包同一级目录。同一级目录就不用我说了吧。ResourceBundle读资源文件class.getClassLoader().getResource()这个方法去获取JAR包中的文件路径。不知道是我理解的问题还是什么。先说这么一点。 说的也对,我的意思是建一个JavaProtect项目,它有个src文件夹,一般的资源文件都是放在这个目录下的,但是打包后就把它打在jar包内了,这个资源文件的内容就无法更改了,不太具有灵活性,我想把资源文件放在src之外的目录,当运行jar文件时,让jar文件区到某一路径下寻找资源文件(如与jar文件处于同一目录,要用相对路径哦),如果没有改资源文件就提示找不到资源文件,这样的话,我们就可以方便的更改资源文件的信息了我这样表述不知你能否理解 ? 呵呵 谢谢你 System.getProperty("user.dir")这个不是取你当前目录吗?如果没有改资源文件就提示找不到资源文件? =》你的意思,资源文件没有修改要提示找不到?那你记载一次最后修改时间吧,比较一下就知道了。我真不知道为什么不能修改资源文件。 打在jar包中的文件能修改吗, 不要重新编译的话 给你贴一个log4j的测试用例,新建一java Proj包结构在下面的java类中可以很明显的看到,将log4j.properties放在src目录下(如果用文件夹查看,双击src文件夹,打开就可以看到),将log4j.jar加入Proj编译环境,一下是测试代码package com.jankey.log;import org.apache.log4j.Logger;import org.apache.log4j.PropertyConfigurator;public class Log { @SuppressWarnings("unused") public Logger loger; private static Log log; private Log() { String filePath = this.getClass().getResource("/").getPath(); filePath = filePath.substring(1).replace("bin", "src"); loger = Logger.getLogger(this.getClass()); PropertyConfigurator.configure(filePath + "log4j.properties"); } public static Log getLoger() { if (null != log) { return log; } else { return new Log(); } }}package com.jankey.testLog;import com.jankey.log.Log;public class LogTest { private Log log = Log.getLoger(); public void info(Object obj) { log.loger.info(obj); } public static void main(String[] args) { LogTest lt = new LogTest(); try { int i = 0; int[] a = new int[]{0, 1, 2, 3, 4}; i = a[10]; }catch(Exception ex) { lt.info(ex); ex.printStackTrace(); } }}log4j.properties内容:log4j.rootLogger=DEBUG, Rlog4j.appender.R=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.R.file=D:/logs/Debug.loglog4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'log4j.appender.R.Append=truelog4j.appender.R.ImmediateFlush=truelog4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n String filePath = System.getProperty("user.dir");用这句话,可以指定资源文件的相对目录了,就不必吧资源文件打在jar文件内了,这样就可以方便的修改资源文件信息了,比如可以随意修改驱动名称,url,password等等,方便多了,比一前 谢谢,上面的这段代码我有了,我的本意是想把log4j.xml放在src之外的一个目录,怎么办呢, 我想把一个字符串中有英文输入的''改为中文输入法的‘’,如何修改,请大家帮帮忙! 问几个基础java知识 ☆关于动画的清除背景和双缓冲的问题☆ 新手求教:用java建立txt文档问题 JAVA有没有类似msdn这样的帮助文件? 文件格式??在线!!!!!!!! 求助:哪里有 java2核心技术 卷一 基础原理 第五版 的电子书 下载?? 已知字符串,怎样附值给同名控件(用JScript)? 第一次和java亲密接触,我该怎么办? 在java中如何打开一个文件? 我是新手,请教一下 利用数组实现栈结构,完成数据的入栈出栈(用java)
能说下怎么实现的吗,xml文件格式的也行 给个例子参考下, 好吗 多谢了
ResourceBundle读资源文件
class.getClassLoader().getResource()这个方法去获取JAR包中的文件路径。
不知道是我理解的问题还是什么。
先说这么一点。
说的也对,我的意思是建一个JavaProtect项目,它有个src文件夹,一般的资源文件都是放在这个目录下的,但是打包后就把它打在jar包内了,这个资源文件的内容就无法更改了,不太具有灵活性,我想把资源文件放在src之外的目录,当运行jar文件时,让jar文件区到某一路径下寻找资源文件(如与jar文件处于同一目录,要用相对路径哦),如果没有改资源文件就提示找不到资源文件,这样的话,我们就可以方便的更改资源文件的信息了我这样表述不知你能否理解 ? 呵呵 谢谢你
打在jar包中的文件能修改吗, 不要重新编译的话
包结构在下面的java类中可以很明显的看到,将log4j.properties放在src目录下(如果用文件夹查看,双击src文件夹,打开就可以看到),将log4j.jar加入Proj编译环境,一下是测试代码package com.jankey.log;import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Log {
@SuppressWarnings("unused")
public Logger loger;
private static Log log;
private Log() {
String filePath = this.getClass().getResource("/").getPath();
filePath = filePath.substring(1).replace("bin", "src");
loger = Logger.getLogger(this.getClass());
PropertyConfigurator.configure(filePath + "log4j.properties");
} public static Log getLoger() {
if (null != log) {
return log;
} else {
return new Log();
}
}
}
package com.jankey.testLog;import com.jankey.log.Log;public class LogTest {
private Log log = Log.getLoger();
public void info(Object obj) {
log.loger.info(obj);
}
public static void main(String[] args) {
LogTest lt = new LogTest();
try {
int i = 0;
int[] a = new int[]{0, 1, 2, 3, 4};
i = a[10];
}catch(Exception ex) {
lt.info(ex);
ex.printStackTrace();
}
}
}
log4j.properties内容:
log4j.rootLogger=DEBUG, R
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.file=D:/logs/Debug.log
log4j.appender.R.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.R.Append=true
log4j.appender.R.ImmediateFlush=true
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%n%n%d%p[%c]-%m%n
String filePath = System.getProperty("user.dir");用这句话,可以指定资源文件的相对目录了,就不必吧资源文件打在jar文件内了,这样就可以方便的修改资源文件信息了,比如可以随意修改驱动名称,url,password等等,方便多了,比一前
谢谢,上面的这段代码我有了,我的本意是想把log4j.xml放在src之外的一个目录,怎么办呢,