服务器java类中获取相对路径与绝对路径问题???

co_ffee 2008-04-28 12:19:23
在我的web工程里面的一个java类中用到dom4j解析xml文件,代码如下:

String configFile = "/test.xml"; //(1)test.xml文件位于WEB-INF\classes\目录下
Document doc = new SAXReader().read(new File(configFile)); //(2)
Element root = doc.getRootElement();
List<Element> subElements = root.elements();

上面代码运行的时候,第2句总报错: 找不到/test.xml文件

后来我把第2行代码改成:
Document doc = new SAXReader().read(new File(Thread.currentThread()
.getContextClassLoader().getResource(configFile).getPath()));
运行就可以读到test.xml文件了,

疑问:
1) 为什么第2行代码获取不到WEB-INF/classes/test.xml文件? 它默认不是去class目录下找的吗? 正确test.xml文件的相对路径的写法应该怎么写?

2) Thread.currentThread().getContextClassLoader().getResource(configFile).getPath() 获取的路径是
"D:\xxx\yyy\zzz\test.xml" 这种形式的, 感觉以这种形式获取的路径是一个绝对路径, 请问这行代码在非windows操作系统能不能正常运行?
...全文
659 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
co_ffee 2008-05-01
  • 打赏
  • 举报
回复
谢谢各位的回答!

to 3楼:

test.xml文件是放在classes 目录下的, 把'/'去掉也是不行哦..
Acylas 2008-04-28
  • 打赏
  • 举报
回复
String configFile = "/test.xml";
如果是classes目录应把上面的/去掉就可以了。
nanjg 2008-04-28
  • 打赏
  • 举报
回复
classes里都是生成的.class文件,src下是主目录。
墨水鱼 2008-04-28
  • 打赏
  • 举报
回复
举几个例子:
如果在eclipse+WTP中运行tomcat,相对路径中的当前路径是eclipse安装目录。
如果是直接运行tomcat,相对路径中的当前路径是tomcat安装目录。
所以WEB-INF/classes不是当前路径。
在web程序中最好多用绝对路径,当然路径不写死在程序里,可以用getRealPath(String path)来得到。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧