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?
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:a:
Esto asegurará que la ruta del archivo esté correctamente encerrada entre comillas y evitará cualquier problema relacionado con los espacios en blanco.