A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程穆 中级黑马   /  2014-8-28 07:39  /  4167 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
本帖最后由 程穆 于 2014-8-28 09:19 编辑

                        prop = new Properties();
                        prop.load(new FileReader(BasicFactory.class.getClassLoader()
                                        .getResource("config.properties").getPath()));

这段代码运行时一直显示如下错误,版本已换成JDK1.6,不好使,又换成1.7还是不好使,又换成1.8还是不好使,换成内置1.5还是不好使。。。


java.lang.NoSuchMethodError: java.util.Properties.load(Ljava/io/Reader;)V

最佳答案

查看完整内容

上面这句代码中getResource(String name) 返回的是一个URL,而new [/backcolor]FileReader()没有接受一个URL作为参数的构造函数,所以提示[/backcolor]错误!解决方法有两个:[/backcolor]一,这是比较麻烦的一种:[/backcolor] 二,直接点,不用[/backcolor]getResource(String name) 方法,而是用[/backcolor]getResourceAsStream(String name) 其中,可以直接写成下面这样,但是要注意[/backcolor]config.properties的路径问 ...

13 个回复

正序浏览
如此诡异,我是标题党。
回复 使用道具 举报
HKing 发表于 2014-8-28 16:57
哈哈,太粗心了吧

:L是啊,其实是一开始就不知道要配置那里
回复 使用道具 举报
HKing 中级黑马 2014-8-28 16:57:08
11#
程穆 发表于 2014-8-28 16:27
解决了,是java complie里面没有配置成1.6

哈哈,太粗心了吧:lol
回复 使用道具 举报
HKing 发表于 2014-8-28 10:00
那就不是这的错吧,反正我测试,你这段代码是对的。会不会是你配置文件里面写错了?再不是就真心没法了, ...

解决了,是java complie里面没有配置成1.6
回复 使用道具 举报
程穆 中级黑马 2014-8-28 12:35:50
9#
HKing 发表于 2014-8-28 10:00
那就不是这的错吧,反正我测试,你这段代码是对的。会不会是你配置文件里面写错了?再不是就真心没法了, ...
  1. CustDao=com.imuxuan.dao.CustDaoImpl
  2. CustService=com.imuxuan.service.CustServiceImpl
复制代码


配置文件里只有这个。。。
回复 使用道具 举报
HKing 中级黑马 2014-8-28 10:00:02
8#
本帖最后由 HKing 于 2014-8-28 10:02 编辑
程穆 发表于 2014-8-28 09:57
呃,我的config.properties在src根目录下

那就不是这的错吧,反正我测试,你这段代码是对的。会不会是你配置文件里面写错了?再不是就真心没法了,坐等高手
回复 使用道具 举报
程穆 中级黑马 2014-8-28 09:57:11
7#
HKing 发表于 2014-8-28 09:44
我用你的代码就修改了
只是把config.properties配置文件的路径写入就OK了,可以再另外一个文件里面调用Basi ...

呃,我的config.properties在src根目录下
回复 使用道具 举报
我用你的代码就修改了
只是把config.properties配置文件的路径写入就OK了,可以再另外一个文件里面调用BasicFactory.getFactory();
没有错啊。
回复 使用道具 举报
HKing 发表于 2014-8-28 09:33
那你把全部代码贴出来啊,我上面的代码是我测试过的,那样写是对的,应该是你代码哪里写错了吧

这个OK啊 ...
  1. 2014-8-28 9:13:51 org.apache.catalina.core.StandardWrapperValve invoke
  2. 严重: Servlet.service() for servlet AddCustServlet threw exception
  3. java.lang.NoSuchMethodError: java.util.Properties.load(Ljava/io/Reader;)V
  4.         at com.imuxuan.factory.BasicFactory.<clinit>(BasicFactory.java:21)
  5.         at com.imuxuan.web.AddCustServlet.doGet(AddCustServlet.java:21)
  6.         at com.imuxuan.web.AddCustServlet.doPost(AddCustServlet.java:42)
  7.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
  8.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
  9.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  10.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  11.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  12.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  13.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  14.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  15.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  16.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  17.         at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
  18.         at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
  19.         at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
  20.         at java.lang.Thread.run(Unknown Source)
复制代码
回复 使用道具 举报
HKing 发表于 2014-8-28 09:33
那你把全部代码贴出来啊,我上面的代码是我测试过的,那样写是对的,应该是你代码哪里写错了吧

这个OK啊 ...

额。我自己写了一遍提示这个错误,然后又直接导入的老师给的工程源码还是提示这个错误。。。

  1. package com.imuxuan.factory;

  2. import java.io.FileReader;
  3. import java.util.Properties;

  4. public class BasicFactory {
  5.         private static BasicFactory factory = new BasicFactory();
  6.         private static Properties prop = null;

  7.         private BasicFactory() {

  8.         }

  9.         public static BasicFactory getFactory() {
  10.                 return factory;
  11.         }

  12.         static {
  13.                 try {
  14.                         prop = new Properties();
  15.                         prop.load(new FileReader(BasicFactory.class.getClassLoader()
  16.                                         .getResource("config.properties").getPath()));
  17.                 } catch (Exception e) {
  18.                         // TODO Auto-generated catch block
  19.                         e.printStackTrace();
  20.                         throw new RuntimeException(e);
  21.                 }
  22.         }


  23.         public <T> T getInstance(Class<T> clazz) {
  24.                 try {
  25.                         String cName = clazz.getSimpleName();
  26.                         String CImplName = prop.getProperty(cName);
  27.                         return (T) Class.forName(CImplName).newInstance();
  28.                 } catch (Exception e) {
  29.                         e.printStackTrace();
  30.                         throw new RuntimeException(e);
  31.                 }
  32.         }
  33. }
复制代码
回复 使用道具 举报
程穆 发表于 2014-8-28 09:16
抱歉,原帖子粘贴代码有误,改成了prop.load(new FileReader(BasicFactory.class.getClassLoader()
                         ...

那你把全部代码贴出来啊,我上面的代码是我测试过的,那样写是对的,应该是你代码哪里写错了吧
  1. Properties props = new Properties();
  2.                 props.load((Reader)new FileReader(ReflectTest.class.getClassLoader().getResource("com/hking/Class/config.properties").getPath()));
  3.                 System.out.println(props.getProperty("className"));
复制代码

这个OK啊,两种方法都行!
回复 使用道具 举报
HKing 发表于 2014-8-28 08:58
上面这句代码中getResource(String name) 返回的是一个URL,而new FileReader()没有接受一个UR ...

:L抱歉,原帖子粘贴代码有误,改成了prop.load(new FileReader(BasicFactory.class.getClassLoader()
                                        .getResource("config.properties").getPath()));还是报同样的错误
回复 使用道具 举报
  1. prop.load((Reader) new FileReader(BasicFactory.class.getClassLoader().getResource("config.properties"))
复制代码
上面这句代码中getResource(String name) 返回的是一个URL,而new FileReader()没有接受一个URL作为参数的构造函数,所以提示错误!解决方法有两个:一,这是比较麻烦的一种:
  1. prop.load((Reader) new FileReader(BasicFactory.class.getClassLoader().getResource("config.properties").getPath())
复制代码
二,直接点,不用
getResource(String name) 方法,而是用getResourceAsStream(String name)  
  1. prop.load(BasicFactory.class.getClassLoader().getResourceAsStream("config.properties"))
复制代码
其中,可以直接写成下面这样,但是要注意
config.properties的路径问题:
  1. prop.load(BasicFactory.class.getResourceAsStream("config.properties"))
复制代码
希望能帮到你:lol


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马