我有一个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(...)
答案 0 :(得分:1)
您可以使用 ConfigFactory 来代替java属性类。文件必须位于资源目录下。
var b = getClass.getResource("/test.properties").getPath
val externalConfig1 = ConfigFactory.parseFile(new File(b))
println(externalConfig1.getInt("maxDimension"))