ERROR - E:\Apache%20Software%20Foundation\.....\db.properties (系统找不到指定的路径。)

报错信息

ERROR - E:\Apache%20Software%20Foundation\apache-tomcat-6.0.18\webapps\BookShop\WEB-INF\classes\db.properties (系统找不到指定的路径。)
java.io.FileNotFoundException: E:\Apache%20Software%20Foundation\apache-tomcat-6.0.18\webapps\BookShop\WEB-INF\classes\db.properties (系统找不到指定的路径。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:146)
    at com.icss.util.DbInfo.init(DbInfo.java:28)
    at com.icss.util.DbInfo.instance(DbInfo.java:19)
    at com.icss.dao.BaseDao.openConnection(BaseDao.java:29)
    at com.icss.dao.UserDao.login(UserDao.java:13)
    at com.icss.biz.UserBiz.login(UserBiz.java:14)
    at com.icss.control.LoginSvl.doPost(LoginSvl.java:43)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:744)

出现错误的原因

Tomact安装目录中有空格,使用反射获取db.properties文件目录时,空格被‘%20’取代,无法找到正确位置
URL对空格,特殊字符和中文进行了编码处理

出错的代码

Properties prop = new Properties();
String path = DbInfo.class.getResource("/").getPath() + "db.properties"; 
prop.load(new FileInputStream(new File(path)));

解决方法

将URL转成URI。URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。(摘自JDK API)

Properties prop = new Properties();
String path = DbInfo.class.getResource("/").toURI().getPath() + "db.properties"; 
prop.load(new FileInputStream(new File(path)));

更多详细解释:http://www.360doc.com/content/11/1009/17/4602013_154657565.shtml

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值