读取properties文件问题

javaors 2007-02-06 08:59:07
我的代码如下:
Properties prop = new Properties();
InputStream is=getClass().getResourceAsStream("/hibernate.properties");//hibernate.properties放就放在当前路径;
try{
prop.load(is);
}catch(Exception e){
e.printStackTrace();
}
hibernate.properties内容如下:
hibernate.dialect = org.hibernate.dialect.SQLServerDialect
hibernate.connection.driver_class = com.microsoft.jdbc.sqlserver.SQLServerDriver
hibernate.connection.url = jdbc:microsoft:sqlserver://localhost;databasename=hibernate
hibernate.connection.username = sa
hibernate.connection.password = sa


错误如下:java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load(Unknown Source)

为什么提示读取不到文件啊?
...全文
1186 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
lichongkk 2008-11-12
  • 打赏
  • 举报
回复
我的也有问题
private static InputStream inputStream = Object.class.getResourceAsStream("/res.properties");
res.properties 与classpath 用文件夹下 就是读不到
("res.properties");也读不到
  • 打赏
  • 举报
回复
学习!!!!
dayonejava 2008-07-17
  • 打赏
  • 举报
回复
InputStream is = getClass().getResourceAsStream("prop.properties");
properties.load(is);
is.close();
dayonejava 2008-07-17
  • 打赏
  • 举报
回复
InputStream is = getClass().getResourceAsStream(propfilename);
正常这样写,properties文件放在class目录下,就可以正常读取了。
javaors 2007-02-07
  • 打赏
  • 举报
回复
问题解决了
是我写的prop.getProperty();里面的参数问题,
非常感谢interpb(曾曾胡,深怕情多累美人!!!)和longzhuchen(七星球)
发钱了,虽然有点少,我也是刚加来csdn,多包涵
以后多来帮忙啊
javaors 2007-02-07
  • 打赏
  • 举报
回复
这次好想找到路径了 用的路径名是"/com/herbanate/hibernate.properties"
但是又出错了
错误是:
java.lang.NullPointerException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.herbanate.JDBCTest.setUp(JDBCTest.java:26)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
又是空指针异常
是不是我的properties写的有问题啊
hibernate.dialect = org.hibernate.dialect.SQLServerDialect
hibernate.connection.driver_class = com.microsoft.jdbc.sqlserver.SQLServerDriver
hibernate.connection.url = jdbc:microsoft:sqlserver://localhost;databasename=hibernate
hibernate.connection.username = sa
hibernate.connection.password = sa


大家帮我看看啊
interpb 2007-02-07
  • 打赏
  • 举报
回复
回复interpb(曾曾胡,深怕情多累美人!!!) ( )


我的意思是你的InputStream is= Test.class.getResourceAsStream()括号中是怎么写的?

、、、、、、、、、、、、、、、、、


就是文件名啊 “hiberxxxxxx” 没有 /
javaors 2007-02-07
  • 打赏
  • 举报
回复
今天突然发现longzhuchen(七星球)的法子也行不通,虽然没有以前的错误但是抛出了io异常
错误如下:java.io.FileNotFoundException: \herbanate\hibernate.properties (The system cannot find the path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at com.herbanate.JDBCTest.setUp(JDBCTest.java:24)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)无法读取文件

at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
java.io.FileNotFoundException: \herbanate\hibernate.properties (The system cannot find the path specified)


很明显的 找不到hibernae.properties文件
我认为是不是要在xml文档配置一下啊
javaors 2007-02-07
  • 打赏
  • 举报
回复
回复interpb(曾曾胡,深怕情多累美人!!!) ( )


我的意思是你的InputStream is= Test.class.getResourceAsStream()括号中是怎么写的?


回复:longzhuchen(七星球)
还有点不明白再classpath中我有很多的路径 那么系统怎么知道是从哪个路径开始的啊
问题有点菜 还请原谅
longzhuchen 2007-02-06
  • 打赏
  • 举报
回复
这个和你的classpath有关系
你编译的时候不是会有个classpath的参数么
如果你使用getResourceAsStream("/")的话,/目录就和你的classpath目录同级
如果你直接FileInputStream("/")的话,/目录就是你当前分区的根目录,如果是D盘就是D:\
interpb 2007-02-06
  • 打赏
  • 举报
回复
就是如上面写的

d:\com\test\Test.class
test下面还有一个properties
javaors 2007-02-06
  • 打赏
  • 举报
回复
interpb(曾曾胡,深怕情多累美人!!!)
我的没测试成功啊
想问一下你的路径是怎么写的
javaors 2007-02-06
  • 打赏
  • 举报
回复
interpb(曾曾胡,深怕情多累美人!!!)
说得很对
可是为什么啊
javaors 2007-02-06
  • 打赏
  • 举报
回复
InputStream is=getClass().getResourceAsStream("/hibernate.properties");

把这个改成FileInputStream is = new FileInputStream("/hibernate.properties");
记得用完后is.close();



//****************************8
正解 可是为什么刚刚的就不行啊 希望longzhuchen(七星球) 给个解释啊
方法没错啊
interpb 2007-02-06
  • 打赏
  • 举报
回复
有 / 的话放在 与com 一级 也是可以的
interpb 2007-02-06
  • 打赏
  • 举报
回复
我已经测试成功了

我的目录结构是
com/test/Test.class
com/test/hibernate.properties

去掉 /

而且 InputStream is=getClass().getResourceAsStream 这句 有问题

改成 InputStream is= Test.class.getResourceAsStream
javaors 2007-02-06
  • 打赏
  • 举报
回复
longzhuchen(七星球)
说错了
我建的不是 web项目
所以没WEB-INF这个目录
javaors 2007-02-06
  • 打赏
  • 举报
回复
interpb(曾曾胡,深怕情多累美人!!!)
我开始也怀疑是没放在class文件一级的目录下的
可是我看过了是在class目录下的
longzhuchen 2007-02-06
  • 打赏
  • 举报
回复
/是从classpath起的根目录,你的文件应该放在/WEB-INF/classes下面吧
longzhuchen 2007-02-06
  • 打赏
  • 举报
回复
InputStream is=getClass().getResourceAsStream("/hibernate.properties");

把这个改成FileInputStream is = new FileInputStream("/hibernate.properties");
记得用完后is.close();
加载更多回复(3)

81,092

社区成员

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

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