hocon scala typesafe-config

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 o config.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 la application.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