4
패키지 된 병을 시작할 때이 오류가 발생합니다. IDE에서 실행하면 오류가 발생하지 않고 실행됩니다.파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다. - Kotlin - Maven
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)
IDE에서
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 루트 : 내가 잘못 가고 그리고 왜주는 무엇인지 전혀 모른다
나 오류. stackoverflow 및 Google 검색 올바른 대답을 날 제공하지 않았다. 더 많은 정보가 필요하면 여기 누군가가 나를 도울 수 있기를 바랍니다. 그렇게 말하십시오.
감사합니다.
그것은 또한 접두사해야 할 수 있습니다를'/는'/ accounts.json''등이 있기 때문에 ToolView와 동일한 패키지가 아닙니다 (ToolView가 어떤 패키지인지 다시 알 수 없습니다). 또는 대신 시스템 클래스 로더를 사용하십시오. –
@JaysonMinard'getResourceAsStream'이 패키지와 관련하여 리소스의 이름을 결정하는'Class' 인스턴스에서 호출 될 때 필요하다고 생각합니다. 그리고 여기에서'getResourceAsStream'은'ClassLoader'에서 호출됩니다. 그러나 어쨌든 명확히 해 주셔서 감사합니다. – Ilya
감사! 그것은 작동합니다! 그러나 이것은 WriteFile에도 적용됩니까? 내가 글을 쓸 때 실수를 범했기 때문에 나는 변하지 않았다. Atlough 난 stream.writer() 메서드를 참조하십시오. – Martacus