最近在训练web的三层开发模式,写了一个小程序,为了模拟数据库,用了xml来进行存放数据,因此需要将xml文件装载到内存中去,代码如下

    private static String fileName;static {fileName=XmlUtils.class.getClassLoader().getResource("user.xml").getPath(); }

采用上面的方法进行获取该文件的物理路径。

一运行出现了下面的错误

java.lang.RuntimeException: org.dom4j.DocumentException:

D:\Workspaces\MyEclipse%208.6\UserModel\WebRoot\WEB-INF\classes\user.xml (系统找不到指定的路径。)

Nested exception: D:\Workspaces\MyEclipse%208.6\UserModel\WebRoot\WEB-INF\classes\user.xml (系统找不到指定的路径。)

将fileName内容输出,发现有个地方很特别,那就是%20,进入路径一看,原来我的workspace中存在一个空格。这导致错误。

下面来自http://www.cumt.org/blog/493里的内容:

"经过一番调查,原来是这是 Java 的一个历史悠久的 bug:

Bug ID: 4466485 getClass( ).getResource( ).getFile( ) returns file name with %20

此 bug 于 2001年6月被提出来,2002年11月最终关闭。
没有修复的原因是这样做会导致兼容性问题。
官方给出的解决方法是采用URI类再把它解码出来。

 URI uri = new URI(url.toString());FileInputStream fis = new FileInputStream(uri.getPath());

而这个bug是当初为了修复另一个 bug 的时候引入的:

Bug ID: 4359123 NoClassDefFoundError if ‘#’ anywhere in path。

我们最终决定不用这个拐弯抹角的方法,干脆采用下面几种办法直接取得 Stream。

ClassLoader.getResourceAsStream ("some/pkg/resource.properties");Class.getResourceAsStream ("/some/pkg/resource.properties");ResourceBundle.getBundle ("some.pkg.resource");

"

经过上面的内容进行修改,就正常了。

private static String fileName;static {URI uri;try {uri = new URI(XmlUtils.class.getClassLoader().getResource("user.xml").toString());fileName = uri.getPath();} catch (URISyntaxException e) {throw new RuntimeException(e);}}

类.class.getClassLoader().getResourceAsStream("user.xml")也可以进行读取文件,但有一点不适合用它,就是当我们的资源位于服务器上的时候,一旦服务器的资源修改后,不能读取到最新的内容,因为类只装载一次。所以先得到需要先得到路径,在进行读取内容。

转载于:https://www.cnblogs.com/shinycan/p/3577418.html

log4j用于读取.xml文件的出现了错误,类加载器.getResource(user.xml).getPath()返回路径空格变成了%20...相关推荐

  1. c语言read有什么作用,C语言read()函数:用于读取打开文件的内容

    函数名:read 头文件: 函数原型: int read(int handle,void *buf,int len); 功能:用于读取打开文件的内容 参数:int handle 为要读取的文件 voi ...

  2. python读取xml文件有哪些方法_深入解读Python 解析xml的几种方式

    一,概述 在XML解析方面,Python贯彻了自己开箱即用batteries included的原则, 在自带的标准库中,python提供了大量可以用于处理XML语言的包和工具 二,正文 1,什么是X ...

  3. xml文件导入mysql_如何使用XML_LOAD()将XML文件导入MySQL数据库表;功能?mysql-问答-阿里云开发者社区-阿里云...

    我有一个看起来像这样的XML文件: 539 Name Surname email.domain.com 2011-04-02 13:30:00 2011-04-02 18:15:00 1,2,4,5, ...

  4. java 序列化成xml文件_将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  5. oxygen 生成java对象_利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析...

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  6. 解决大/小于号在mapper.xml文件中的语法错误

    mapper.xml文件因为文件本身的属性,如果出现尖括号会出现语义歧义,所以在进行一些大小写比较操作时,会引起操作文件 Tag name expected 错误.解决办法也很简单,xml文件脱胎于h ...

  7. python解析xml文件最好选用的模块_用Python解析XML文件

    本文翻译自:https://developer.yahoo.com/python/python-xml.html 使用Python解析XML文件 许多YDN APIs提供了JSON格式的数据输出,JS ...

  8. android ctrl 左键鼠标左键直接打开xml文件夹,android – 在listview项目上单击打开xml文件...

    在onItemClick中 跟随 这似乎是一个良好的教程开始. 你没有打开一个xml.您可以根据列表项单击的位置导航到其他活动.每个活动都有自己的布局设置. 以下应该有效 try { String v ...

  9. xml文件怎么转换成wps_WPS文字2016如何保存XML格式

    小白在用word的时候总有这样一个困惑,为何保存的文件都是doc的格式,有的时候,我们在特殊的地方,需要XML格式,那么在WPS2016中,怎样将文件保存为XML格式呢?下面小编教你在WPS文字201 ...

最新文章

  1. 让你的javascript函数拥有记忆功能,降低全局变量的使用
  2. python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题
  3. arcgis飞行轨迹动画_高德地图,百度地图,arcgis地图利用canvas动画绘制圆形扩散、运动轨迹等动态效果...
  4. 招募 | 贪心科技招募CV、语音分析、联邦学习课程讲师(在线+兼职)
  5. 小程序获取StorageSync时候的坑
  6. 真正拿大厂offer的人,都赢在这一点
  7. TCP/IP协议简述
  8. 4月28日见!努比亚红魔3电竞手机曝光:90Hz屏幕刷新率加持
  9. android-support-v7-appcompat的配置使用
  10. 【编程帮助】python中字符串前的 r、b、u、f 的含义及用法
  11. iPhone 居然能当公交卡刷了?!
  12. Linux 操作系统下的指纹开发
  13. OpenGL ES glad 下载和使用
  14. React-Native笔记--Debugger and device times had drifted by more than 60s.
  15. 微信小程序——婚礼邀请函页面
  16. 2020-12-10 MATLAB学习小结(十九)
  17. 台式计算机usb口不识别鼠标,总算找到无法识别usb鼠标设备怎么办
  18. 实现对文件夹进行加密
  19. 真假PSP的一些鉴别方法~~希望对准备入手PSP的玩友有帮助!!
  20. VSCODE codeforces 插件

热门文章

  1. RichTextBox实现关键字自定义颜色显示(C#)
  2. C#反射(Reflection)详解
  3. MySQL中的锁(表锁、行锁)
  4. 第三章.数据类型和运算符
  5. __slots__(面向对象进阶)
  6. Selenium Python 解决 UnexpectedAlertPresentException
  7. 网络请求--Retrofit2使用方法
  8. RxJava使用(二)filter 操作符
  9. 为什么很多程序员面试造火箭,入职拧螺丝?
  10. socket的拉屎模型