wyskoj / midis2jam2

🎶 A remaster of MIDIJam, a 3D MIDI file visualizer.
https://midis2jam2.xyz
GNU General Public License v3.0
152 stars 21 forks source link

Startup crash if locale is not implemented #173

Closed Kustale closed 6 months ago

Kustale commented 9 months ago

Describe the bug A clear and concise description of what the bug is.

Java-related error.

Exception in thread "main" java.lang.ExceptionInInitializerError at org.wysko.midis2jam2.MainKt$main$5.invoke(Main.kt:146) at org.wysko.midis2jam2.MainKt$main$5.invoke(Main.kt:106) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.ui.window.Application_desktopKt$application$1$1.invoke(Application.desktop.kt:115) at androidx.compose.ui.window.Application_desktopKt$application$1$1.invoke(Application.desktop.kt:114) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1$1.invoke(Application.desktop.kt:226) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1$1.invoke(Application.desktop.kt:225) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1.invoke(Application.desktop.kt:221) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1.invoke(Application.desktop.kt:219) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:37) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3374) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3364) at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341) at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source) at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3364) at androidx.compose.runtime.ComposerImpl.composeContent$runtime(Composer.kt:3299) at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:587) at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:966) at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:519) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:219) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Caused by: java.util.MissingResourceException: Can't find bundle for base name i18n.midis2jam2, locale ko at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1683) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1586) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1549) at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:932) at org.wysko.midis2jam2.gui.viewmodel.I18n.getStringsFromResourceBundle(Internationalization.kt:71) at org.wysko.midis2jam2.gui.viewmodel.I18n.(Internationalization.kt:51) ... 43 more

Offending MIDI file Upload the MIDI file that causes the bug here.

No MIDI file used.

Expected behavior A clear and concise description of what you expected to happen.

Run java -jar midis2jam2-windows-1.8.0.jar

Screenshots If applicable, add screenshots to help explain your problem.

235089

System Provide your OS, and computer specs if applicable.

OS : Windows 10 Pro 21H2 CPU : Intel 4th i7 4790 RAM : 16GB GPU : Intel Graphics HD 4600 + GeForce GTX 1060 6GB PhysX MOD[P106-100] Java : openlogic-openjdk-17.0.8+7-windows-x64

Additional context Add any other context about the problem here.

wyskoj commented 9 months ago

Thanks for the issue! I caught this bug a while ago and thankfully there's a pretty easy fix.

The problem is your computer's locale is set to Korean, but midis2jam2 doesn't have a Korean translation. It's looking for one, then crashing because it can't find it.

A temporary fix until I resolve this issue:

sandisbergvalds2008 commented 7 months ago

um, i tried that fix, but it doesn't work for me and this showed up. bandicam 2023-11-12 15-27-32-878

wyskoj commented 7 months ago

@sandisbergvalds2008 I need to see the full contents of that error message to see what's going on.

sandisbergvalds2008 commented 7 months ago

oh, ok. it was: java.lang.ExceptionInInitializerError at org.wysko.midis2jam2.MainKt$main$5.invoke(Main.kt:146) at org.wysko.midis2jam2.MainKt$main$5.invoke(Main.kt:106) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.ui.window.Application_desktopKt$application$1$1.invoke(Application.desktop.kt:115) at androidx.compose.ui.window.Application_desktopKt$application$1$1.invoke(Application.desktop.kt:114) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:116) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1$1.invoke(Application.desktop.kt:226) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1$1.invoke(Application.desktop.kt:225) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:228) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1.invoke(Application.desktop.kt:221) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2$1.invoke(Application.desktop.kt:219) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:107) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.jvm.kt:34) at androidx.compose.runtime.ActualJvm_jvmKt.invokeComposable(ActualJvm.jvm.kt:37) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3374) at androidx.compose.runtime.ComposerImpl$doCompose$2$5.invoke(Composer.kt:3364) at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341) at androidx.compose.runtime.SnapshotStateKt.observeDerivedStateRecalculations(Unknown Source) at androidx.compose.runtime.ComposerImpl.doCompose(Composer.kt:3364) at androidx.compose.runtime.ComposerImpl.composeContent$runtime(Composer.kt:3299) at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:587) at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:966) at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:519) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:219) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90) Caused by: java.util.MissingResourceException: Can't find bundle for base name i18n.midis2jam2, locale lv at java.base/java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:2045) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1683) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1586) at java.base/java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1549) at java.base/java.util.ResourceBundle.getBundle(ResourceBundle.java:932) at org.wysko.midis2jam2.gui.viewmodel.I18n.getStringsFromResourceBundle(Internationalization.kt:71) at org.wysko.midis2jam2.gui.viewmodel.I18n.(Internationalization.kt:51) ... 43 more

wyskoj commented 7 months ago

The program is still looking for a Latvian localization. Check that you've followed the steps correctly.

sandisbergvalds2008 commented 7 months ago

hmmm... where can i put that locale.txt file in it? i can't remember

wyskoj commented 7 months ago

@sandisbergvalds2008 Refer to these instructions.