无法从类路径加载属性文件

时间:2016-06-22 11:42:58

标签: java scala

我有一个eclipse scala项目,我正在与sbt组装。我想添加一个属性文件,我尝试将其放在src和target / scala / classes文件夹中。我不知道如何在我的程序中加载此文件。这是我的代码:

val reader=this.getClass().getClassLoader().getResourceAsStream("ccm.properties") //Reading the properties file
val p=new Properties();  
p.load(reader);  
val maxDimension = p.getProperty("maxDimension").toInt 

这是我得到的例外:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.musigma.ind.invictus.ConvergentCrossMapping.main(ConvergentCrossMapping.scala)
Caused by: java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:434)
    at java.util.Properties.load0(Properties.java:353)
    at java.util.Properties.load(Properties.java:341)
    at com.musigma.ind.invictus.ConvergentCrossMapping$.<init>(ConvergentCrossMapping.scala:35)
    at com.musigma.ind.invictus.ConvergentCrossMapping$.<clinit>(ConvergentCrossMapping.scala)
    ... 1 more

更新:此问题与this不重复,因为我在Scala对象中编写此代码而我无法使用this.class.getResourceAsStream(...)

1 个答案:

答案 0 :(得分:1)

您可以使用 ConfigFactory 来代替java属性类。文件必须位于资源目​​录下。

var b = getClass.getResource("/test.properties").getPath
val externalConfig1 = ConfigFactory.parseFile(new File(b))

println(externalConfig1.getInt("maxDimension"))