es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

java.util.logging falla en wsl con espacios en las rutas

Tengo un pequeño proyecto de Java configurado con los 3 archivos Foo.java, logging.properties y build.gradle como se muestra a continuación.

En el archivo Foo.java, ejecuto lo siguiente:

package foo;
import java.util.logging.Logger;

public class Foo {

public static void  main(String[] args) {
    var file = Foo.class.getClassLoader().getResource("logging.properties").getFile();
    System.setProperty("java.util.logging.config.file", file);
    var l = Logger.getLogger(Foo.class.getName());
    l.info("HOLA!");
}

}

Y el archivo de propiedades correspondiente es simplemente:

properties
handlers=java.util.logging.ConsoleHandler

El archivo gradle es bastante simple:

apply plugin: 'java'
sourceCompatibility = 11
targetCompatibility = 11

Están estructurados de la siguiente manera:

foo/
├─ src/
│  ├─ java/
│  │  ├─ main/
│  │  │  ├─ foo/
│  │  │  │  ├─ Foo.java
│  ├─ resources/
│  │  ├─ logging.properties
├─ build.gradle

Para ejecutar el código, escribo:

gradle build
java -cp build/classes/java/main/:build/resources/main/ foo.Foo

Ahora, mi problema es el siguiente: si localizo root en /mnt/c/Users/Ludvig/Desktop/logtest/root, todo funciona bien. Si cambio la ruta a /mnt/c/Users/Ludvig/Desktop/log test/root, no obtengo salida de registro. ¡Tenga en cuenta que falla silenciosamente! Entonces el programa se ejecuta, pero el registro falla. ¿Qué debo hacer?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con el uso de espacios en blanco en la ruta del archivo. Dado que la ruta se encuentra en el Subsistema de Windows para Linux, es posible que los espacios en blanco estén causando problemas con la forma en que el sistema analiza la ruta.

    Una posible solución es encerrar la ruta del archivo entre comillas al establecer la propiedad del sistema para el archivo de configuración de registro. Por ejemplo, en el archivo Foo.java, cambie la siguiente línea:

    System.setProperty("java.util.logging.config.file", file);
    

    a:

    System.setProperty("java.util.logging.config.file", "\"" + file + "\"");
    

    Esto asegurará que la ruta del archivo esté correctamente encerrada entre comillas y evitará cualquier problema relacionado con los espacios en blanco.

Comments are closed.