El nombre del file, el nombre del directory o la syntax de la label del volumen son incorrectos – Kotlin – Maven

Recibo este error cuando inicio mi jar empaquetado. Cuando lo ejecuto desde mi IDE no da el error y se ejecuta.

java.io.FileNotFoundException: file:\C:\Development\Kotlin\AccountTool\target\AccountTool-1.0-SNAPSHOT-jar-with-dependencies.jar!\accounts.json (The filename, directory name or volume label syntax is incorrect) at java.io.FileInputStream.open0(Native Method) at java.io.FileInputStream.open(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileReader.<init>(Unknown Source) at com.martacus.accounttool.ToolView$handler.readData(Tool.kt:41) at com.martacus.accounttool.ToolView.<init>(Tool.kt:56) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at tornadofx.FXKt.find(FX.kt:238) at tornadofx.App.start(App.kt:27) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$159(Unknown Source) at com.sun.javafx.application.LauncherImpl$$Lambda$52/31866147.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$172(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$45/2900468.run(Unknown Source) at com.sun.javafx.application.PlatformImpl.lambda$null$170(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$48/4210449.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$171(Unknown Source) at com.sun.javafx.application.PlatformImpl$$Lambda$47/24077489.run(Unknown Source) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$145(Unknown Source) at com.sun.glass.ui.win.WinApplication$$Lambda$36/1828305.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

Jerarquía de código y file en ide: enter image description here

 fun readData(){ accounts.clear() var readFile = ToolView::class.java.classLoader.getResource("accounts.json").file println(readFile) FileReader(readFile).use{ var account = gson.fromJson(it, Array<Account>::class.java) ?: return for(i in account){ accounts.add(i) } } } 

.jar raíz:

enter image description here

No tengo idea de qué está pasando y por qué me está dando el error. La búsqueda en stackoverflow y Google no me proporcionó la respuesta correcta. Espero que alguien aquí pueda ayudarme, si necesita más información, dígalo.

¡Gracias!

Cuando un recurso se empaqueta en un contenedor, ya no está disponible como un file en el sistema de files. Por lo tanto, no puede usar la API estándar para trabajar con el sistema de files como File() o FileReader() para acceder al contenido del recurso.

En su lugar, debe abrir la secuencia de resources con los methods Class.getResourceAsStream o ClassLoader.getResourceAsStream y leer el contenido de esa secuencia:

 val stream = ToolView::class.java.classLoader.getResourceAsStream("accounts.json") stream.reader().use { println(it.readText()) }