[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[java]properties应该放在哪里?-----Where do I put .properties files?

上一篇:[java]如何遍历Properties的所有的元素-----Listing the Elements of a Properties
下一篇:[本站整理][java]JDK+eclipse+weblogic+Servlet安装配置使用简要说明[1]

添加日期:2006-6-28 9:06:16 快速返回   返回列表 阅读9549次
不是web程序,就是普通的java application。

properties路径直接放在classpath系统变量里不行。

copy到类包的根目录,在那里java ...就可以。

但是cd..一下,然后java -classpath bin ...就不行了。

非得把properties文件放到这一层目录才行。

也就是,properties非得放在执行java时的目录才可以。

为什么啊?
=======================================================================
没看明白你说的到底是个什么样子的目录结构。。。。

我猜测 和你java程序里调用properties时指定目录位置的方法有关系。
=======================================================================
唉,终于有人帮俺解决了。

原来是这么写的:
--------------------------------------------------------
Properties pro = new Properties();
try {
    FileInputStream inStr = new FileInputStream(new File(PRO_FILENAME));
    pro.load(inStr);
}
----------------------------------------------------------
换成这样就行了,唉,我真菜。
---------------------------------------------------------------
Properties pro = new Properties();
try {
    InputStream inStr = ClassLoader.getSystemResourceAsStream(PRO_FILENAME);
    pro.load(inStr);
}
---------------------------------------------------------------
properties文件应该就放在包的根目录,也就是classes/或者bin/之下。

=======================================================================
唉,不得不感慨一下很多从jsp过来的程序员连java的基础知识都没有

楼主在命令行下试一下
System.out.println(new File("a.txt").getAbsoluteFile());
你会发现每一次得到的a.txt都是相对于你执行java.exe的目录的
除非你指定的是绝对路径

而ClassLoader.getSystemResourceAsStream()是通过class loader去加载资源
例如你把a.txt放在jar中,那么class loader将会在你当前执行的jar中寻找资源
但无须是根目录,比如你放在abc目录下,那么加载的时候就使用 "/abc/a.txt"

至于classes或者bin目录,都是IDE自己规定的,跟资源在jar中的路径毫无关系
你可以把资源放在任何位置,打包的时候加入进去就是了 
=======================================================================
呵呵,多谢神仙。

这些东东我头一次用,所以晕头晕脑的。

经过仙人指点,终于明白了。

new File(xx)有点按操作系统路径查找文件的意思。

ClassLoader.getSystemResourceAsStream()有点按java本身的类体系查找的意思。
------------------------------------------------------------------
这个问题我折腾了一中午加一下午了,

听君一席话,胜读万年书。

再次拜谢。
=======================================================================
当new File()指定了一个非绝对路径时,例如new file("a.txt")
那么其绝对路径,就是你执行java.exe的目录+你给出的相对路径
执行java.exe的目录可以理解为"工作目录"
这可以通过系统属性user.dir获得
也就是说
如果你指定了一个非绝对路径的file对象
那么其绝对路径 = System.getProperty("user.dir")+"/" + file.getPath();

ClassLoader.getSystemResourceAsStream()是从类加载的位置去查找资源
也就是以classpath作为基础路径来查找
=======================================================================
哦,原来,我看JDK说明里说什么“工作目录”,我一直纳闷这个工作目录在哪里,

原来就是执行java的路径啊…………

GOOD,严重thank you!

 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved