2016-06-22 2 views
0

У меня есть проект scala eclipse, который я собираю с помощью 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 

UPDATE: Этот вопрос не является дубликатом this, как я пишу этот код в объект Scala, и я не могу использование this.class.getResourceAsStream(...)

+0

где в 'src' размещали этот файл? Соглашением является 'src/main/resources', который по умолчанию сканируется в classpath, это то, где вы его положили? –

+0

@TzachZohar В каталоге ресурсов в главном нет. Я создал его и разместил там файл. Я все еще получаю то же исключение. –

+0

@StoyanDekov, так как это scala, есть различия –

ответ

1

Вместо класса свойств java, вы можете сделать это с помощью ConfigFactory. Файл должен находиться в каталоге ресурсов.

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

println(externalConfig1.getInt("maxDimension")) 
Смежные вопросы