[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 |
快速返回 返回列表 |
阅读10666次 |
不是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!
|
|