Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example TodoApp: java.lang.NoClassDefFoundError: java/sql/DriverManager #381

Closed
arkivanov opened this issue Feb 13, 2021 · 11 comments
Closed
Assignees

Comments

@arkivanov
Copy link
Contributor

The example TodoApp crashes when launched via runDistributable Gradle task, but works fine when launched via run task.

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: java/sql/DriverManager
	at com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver.<init>(JdbcSqliteDriver.kt:26)
	at com.squareup.sqldelight.sqlite.driver.JdbcSqliteDriver.<init>(JdbcSqliteDriver.kt:15)
	at example.todo.common.database.TodoDatabaseDriverFactoryKt.TodoDatabaseDriver(TodoDatabaseDriverFactory.kt:11)
	at example.todo.desktop.MainKt$todoRoot$1.<init>(Main.kt:44)
	at example.todo.desktop.MainKt.todoRoot(Main.kt:42)
	at example.todo.desktop.MainKt.access$todoRoot(Main.kt:1)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-1$1$1.invoke(Main.kt:32)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-1$1$1.invoke(Main.kt:32)
	at com.arkivanov.decompose.extensions.compose.jetbrains.RootComponentBuilderKt.rootComponent(RootComponentBuilder.kt:37)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-1$1.invoke(Main.kt:32)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-1$1.invoke(Main.kt:31)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.desktop.DesktopThemeKt.DesktopTheme(DesktopTheme.kt:54)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-2$1.invoke(Main.kt:31)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-2$1.invoke(Main.kt:30)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.material.TextKt.ProvideTextStyle(Text.kt:246)
	at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:80)
	at androidx.compose.material.MaterialThemeKt$MaterialTheme$1.invoke(MaterialTheme.kt:79)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.material.MaterialThemeKt.MaterialTheme(MaterialTheme.kt:71)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-3$1.invoke(Main.kt:30)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-3$1.invoke(Main.kt:29)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.material.SurfaceKt$Surface$1.invoke(Surface.kt:116)
	at androidx.compose.material.SurfaceKt$Surface$1.invoke(Surface.kt:105)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.material.SurfaceKt.Surface-F-jzlyU(Surface.kt:102)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-4$1.invoke(Main.kt:29)
	at example.todo.desktop.ComposableSingletons$MainKt$lambda-4$1.invoke(Main.kt:28)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.desktop.AppWindowKt$Window$1$1.invoke(AppWindow.kt:91)
	at androidx.compose.desktop.AppWindowKt$Window$1$1.invoke(AppWindow.kt:90)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.desktop.AppWindow$show$1.invoke(AppWindow.kt:439)
	at androidx.compose.desktop.AppWindow$show$1.invoke(AppWindow.kt:437)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.desktop.AppWindow$onCreate$1.invoke(AppWindow.kt:412)
	at androidx.compose.desktop.AppWindow$onCreate$1.invoke(AppWindow.kt:411)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.ui.platform.WrapperKt$setContent$1$1.invoke(Wrapper.kt:41)
	at androidx.compose.ui.platform.WrapperKt$setContent$1$1.invoke(Wrapper.kt:40)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(CompositionLocals.kt:121)
	at androidx.compose.ui.platform.WrapperKt$ProvideDesktopAmbients$1.invoke(Wrapper.kt:60)
	at androidx.compose.ui.platform.WrapperKt$ProvideDesktopAmbients$1.invoke(Wrapper.kt:59)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(CompositionLocal.kt:190)
	at androidx.compose.ui.platform.WrapperKt.ProvideDesktopAmbients(Wrapper.kt:56)
	at androidx.compose.ui.platform.WrapperKt.access$ProvideDesktopAmbients(Wrapper.kt:1)
	at androidx.compose.ui.platform.WrapperKt$setContent$1.invoke(Wrapper.kt:40)
	at androidx.compose.ui.platform.WrapperKt$setContent$1.invoke(Wrapper.kt:39)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:121)
	at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(ComposableLambda.kt:46)
	at androidx.compose.runtime.ComposerKt.invokeComposable(Composer.kt:3415)
	at androidx.compose.runtime.ComposerImpl.composeContent$runtime(Composer.kt:2602)
	at androidx.compose.runtime.CompositionImpl.composeContent(Composition.kt:240)
	at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:524)
	at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:236)
	at androidx.compose.ui.platform.WrapperKt.setContent(Wrapper.kt:39)
	at androidx.compose.desktop.ComposeLayer.initOwner(ComposeLayer.kt:256)
	at androidx.compose.desktop.ComposeLayer.access$initOwner(ComposeLayer.kt:50)
	at androidx.compose.desktop.ComposeLayer$Wrapped.init(ComposeLayer.kt:83)
	at org.jetbrains.skiko.HardwareLayer.checkIsShowing(HardwareLayer.kt:30)
	at org.jetbrains.skiko.HardwareLayer.access$checkIsShowing(HardwareLayer.kt:7)
	at org.jetbrains.skiko.HardwareLayer$1.hierarchyChanged(HardwareLayer.kt:22)
	at java.desktop/java.awt.Component.processHierarchyEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.Component.createHierarchyEvents(Unknown Source)
	at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
	at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
	at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
	at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
	at java.desktop/java.awt.Container.createHierarchyEvents(Unknown Source)
	at java.desktop/java.awt.Component.show(Unknown Source)
	at java.desktop/java.awt.Window.show(Unknown Source)
	at java.desktop/java.awt.Component.show(Unknown Source)
	at java.desktop/java.awt.Component.setVisible(Unknown Source)
	at java.desktop/java.awt.Window.setVisible(Unknown Source)
	at androidx.compose.desktop.ComposeWindow.setVisible(ComposeWindow.kt:86)
	at androidx.compose.desktop.AppWindow.show(AppWindow.kt:442)
	at androidx.compose.desktop.AppWindow.show$default(AppWindow.kt:428)
	at androidx.compose.desktop.AppWindowKt$Window$1.run(AppWindow.kt:90)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: java.sql.DriverManager
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	... 115 more
@jimgoog
Copy link
Collaborator

jimgoog commented Feb 14, 2021

This bug looks potentially similar in shape to #377

@olonho
Copy link
Contributor

olonho commented Feb 15, 2021

Likely required module is called via reflection and is not included by jpackage reachability analysis. Need to add it explicitly, like in https://github.com/JetBrains/compose-jb/blob/1d5fdbcc73f3e0d6134e9dd7d8bd579afc7a69cd/examples/imageviewer/desktop/build.gradle.kts#L30

@olonho
Copy link
Contributor

olonho commented Feb 15, 2021

9df0bfc shall fix it.

@arkivanov
Copy link
Contributor Author

@olonho Thanks, it worked!

@muhammadyusuf-kurbonov
Copy link

I now have an issue with sqlite-driver.

Caused by: java.sql.SQLException: No suitable driver found for jdbc:sqlite:main.db

Can anyone explain, why it happens?

@dima-avdeev-jb
Copy link
Contributor

@muhammadyusuf-kurbonov Can you please provide minimal reproducible sample on GitHub?

@muhammadyusuf-kurbonov
Copy link

https://github.com/JetBrains/compose-jb/tree/update_versions_in_examples/examples/todoapp

https://github.com/muhammadyusuf-kurbonov/LogisticsControlSystem

simple run runReleaseDistributable task with gradle or build and run standalone

@muhammadyusuf-kurbonov
Copy link

Great. Thank you

@dima-avdeev-jb
Copy link
Contributor

Thanks, I add notice about your case in this issue: #2668

MatkovIvan pushed a commit to MatkovIvan/compose-multiplatform that referenced this issue May 10, 2023
@edgardonavas
Copy link

Greetings, the same problem is happening to me right now and I am trying to solve it by placing the modules("jdk.crypto.ec") but it does not solve my problem, what do you suggest I do?

@okushnikov
Copy link

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants