为什么 properties.load()方法不支持reader?但是别人行呢?急..

louiechong 2011-02-27 03:36:25

这份代码在别人的机子上能运行,但在我的机子上却报错了,请大家帮帮忙,看看是什么问题。

以下是报错信息:(主要就是properties.load()的问题,说不支持reader)
Exception sending context initialized event to listener instance of class com.fortune.hms.core.web.listener.StartupListener
java.lang.Error: Unresolved compilation problem:
The method load(InputStream) in the type Properties is not applicable for the arguments (Reader)



以下是本人代码:


try {
FileInputStream fis = new FileInputStream(filePath
+ "/config.properties");
Reader r = new InputStreamReader(fis, "UTF-8");

//................................... 这里报错 ..........................................
props.load(r);
//.......................................................................................

Iterator it = props.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
logger.info("config.properties key:" + key);
configMap.put(key, props.get(key));
}
} catch (Exception ex) {
logger.error(ex.getMessage());
}

...全文
393 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dracularking 2011-03-01
  • 打赏
  • 举报
回复
比较同意楼上提到的jdk问题,你的编译环境可能不支持那个Reader型参数的重载方法,而别人的支持,查下这个

java.lang.Error: Unresolved compilation problem:
The method load(InputStream) in the type Properties is not applicable for the arguments (Reader)

而再上面发送事件给监听者有异常,可能就是因这个错误引起的事件都未初始化完成或初始化错误导致的发送异常
humanity 2011-03-01
  • 打赏
  • 举报
回复
这也暗示了 Propperties 文件是用来配置参数的,而且都是 ASCII 码,在里面写汉字是不推荐的,如果没有汉字,那用 InputStream 就足够了,不需要考虑字符集的。
ybcwjj 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zn85600301 的回复:]
引用 4 楼 dongyangmoney 的回复:

The method load(InputStream)

props.load(r);

参数类型不对啊。。。

这个load方法有重载的 是可以传入Reader对象的
具体楼主还是跟踪下吧
[/Quote]

哪个版本的jdk?
zn85600301 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dongyangmoney 的回复:]

The method load(InputStream)

props.load(r);

参数类型不对啊。。。
[/Quote]
这个load方法有重载的 是可以传入Reader对象的
具体楼主还是跟踪下吧
dongyangmoney 2011-02-28
  • 打赏
  • 举报
回复
The method load(InputStream)

props.load(r);

参数类型不对啊。。。
yanebupt 2011-02-28
  • 打赏
  • 举报
回复
java.util.Properties的load方法声明形式为:void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。这里参数为字节输入流,而Reader为字符输入流,并且两者没有继承关系,所以你的程序会报错
ybcwjj 2011-02-28
  • 打赏
  • 举报
回复
呵呵,看jdk的api就知道那个load方法的参数了

别人机器上是不是重载了那个方法啊
zn85600301 2011-02-28
  • 打赏
  • 举报
回复

java.io.InputStream is = PropertyUtil.class
.getResourceAsStream(propertyFilePath);
if (is == null) {
return loadPropertyFileByFileSystem(propertyFilePath);
}
Properties ppts = new Properties();
try {
ppts.load(is);
return ppts;
} catch (Exception e) {
_log.debug("加载属性文件出错:" + propertyFilePath, e);
return null;
}

这样试试
bjliuzg 2011-02-28
  • 打赏
  • 举报
回复
程序的编译级别一样吗?

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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