scala - hocon
No se ha encontrado ningún ajuste de configuración para la clave de configuración segura. (7)
¿Está utilizando un IDE o un sbt? Tuve un problema similar al usar Eclipse. Simplemente no encontró el archivo application.conf al principio y más tarde no pudo notar las ediciones. Sin embargo, una vez que ejecuté mi programa a través de sbt, todo funcionó bien, incluido Eclipse. Entonces, agregué ''main / resources'' a las bibliotecas (Proyecto -> Propiedades -> Java Build Path -> Bibliotecas "," agregar carpeta de clase "). Eso también podría ayudarlo.
Estoy tratando de implementar una herramienta de configuración de typesafehub/config usando este código
val conf = ConfigFactory.load()
val url = conf.getString("add.prefix") + id + "/?" + conf.getString("add.token")
Y la ubicación del archivo de propiedades es /src/main/resources/application.conf
Pero por alguna razón estoy recibiendo
com.typesafe.config.ConfigException$Missing: No configuration setting found for key ''add''
Contenido del archivo
add {
token = "access_token=6235uhC9kG05ulDtG8DJDA"
prefix = "https://graph.facebook.com/v2.2/"
limit = "&limit=250"
comments="?pretty=0&limit=250&access_token=69kG05ulDtG8DJDA&filter=stream"
feed="/feed?limit=200&access_token=623501EuhC9kG05ulDtG8DJDA&pretty=0"
}
Todo se ve configurado correctamente ?? ¿Me perdí algo?
Gracias,
miki
Coloque su application.conf en la carpeta src y debería funcionar
El mensaje de error le indica que, independientemente de la configuración que se haya leído, no incluyó una configuración de nivel superior llamada add
. La función ConfigFactory.load
intentará cargar la configuración desde una variedad de lugares. Por defecto buscará un archivo llamado application
con un sufijo de .conf
o .json
. Busca ese archivo como un recurso Java en su ruta de clase. Sin embargo, varias propiedades del sistema anularán este comportamiento predeterminado.
Entonces, es probable que lo que te perdiste sea uno de estos:
- ¿Es posible que
src/main/resources
no esté en su ruta de clase? - ¿Están las
config.file
,config.resource
oconfig.url
establecidas? - ¿Está vacío el archivo
application.conf
? - ¿Tiene un
application.conf
que se encontraría anteriormente en su ruta de clase? - ¿Está la clave:
add
definida en laapplication.conf
?
Me encontré con este problema dentro de una prueba de Specs2 que fue dirigida por SBT. Resultó que el problema fue causado por https://github.com/etorreborre/specs2/issues/556 . En ese caso, el contextClassLoader del Thread no estaba usando el cargador de clases correcto. Si se encuentra con un error similar, hay otras versiones de ConfigFactory.load () que le permiten pasar el ClassLoader de la clase actual. Si está utilizando Specs2 y está viendo este problema, use una versión <= 3.8.6 o> = 4.0.1.
Me encontré con esto haciendo un getString
en un entero en mi archivo de configuración.
Me encontré exactamente con el mismo problema y la solución fue reemplazar =
con :
en el application.conf
. Prueba con el siguiente contenido en tu application.conf
:
add {
token: "access_token=6235uhC9kG05ulDtG8DJDA"
prefix: "https://graph.facebook.com/v2.2/"
limit: "&limit=250"
comments: "?pretty=0&limit=250&access_token=69kG05ulDtG8DJDA&filter=stream"
feed: "/feed?limit=200&access_token=623501EuhC9kG05ulDtG8DJDA&pretty=0"
}
Extrañamente, IntelliJ no detecta ningún error de formato o sintaxis cuando usa =
para mí.
Revisa tu camino. En mi caso tuve el mismo problema, habiendo colocado application.conf en src / main / resources / configuration / common / application.conf
Incorrecto:
val conf = ConfigFactory.load(s"/configuration/common/application.conf")
Correcto
val conf = ConfigFactory.load(s"configuration/common/application.conf")
resultó ser un error tonto que hice.
A continuación, no importa si usa ":" o "=" en el archivo .conf.
Obteniendo el valor del ejemplo:
server{
proc {
max = "600"
}
}
conf.getString("server.proc.max")
Incluso puedes tener la siguiente conf:
proc {
max = "600"
}
proc {
main = "60000"
}
conf.getString("proc.max") //prints 600
conf.getString("proc.min") //prints 60000