前提
KotlinとCompose for Desktopを使ってデスクトップアプリを作りたいです。
Compose for desktopのテンプレートを使ってプロジェクトを作成し、
https://pleiades.io/help/idea/create-your-first-kotlin-app.html#run-the-jar
を参考にして、jarファイルを生成したのですが、生成したjarファイルを実行するとエラーメッセージが表示されます。
実現したいこと
- ダブルクリックで実行可能なjarファイルを生成したい
発生している問題・エラーメッセージ
生成したjarファイルを実行すると、
Exception in thread "main" java.lang.ExceptionInInitializerError at androidx.compose.ui.awt.ComposeLayer.<init>(ComposeLayer.desktop.kt:73) at androidx.compose.ui.awt.ComposeWindowDelegate.<init>(ComposeWindowDelegate.desktop.kt:50) at androidx.compose.ui.awt.ComposeWindow.<init>(ComposeWindow.desktop.kt:43) at androidx.compose.ui.awt.ComposeWindow.<init>(ComposeWindow.desktop.kt:40) at androidx.compose.ui.window.Window_desktopKt$Window$3.invoke(Window.desktop.kt:161) at androidx.compose.ui.window.Window_desktopKt$Window$3.invoke(Window.desktop.kt:156) at androidx.compose.ui.window.Window_desktopKt$Window$10$1.invoke(Window.desktop.kt:367) at androidx.compose.ui.window.Window_desktopKt$Window$10$1.invoke(Window.desktop.kt:366) at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2.invoke(AwtWindow.desktop.kt:76) at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2.invoke(AwtWindow.desktop.kt:75) at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:81) at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:801) at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:647) at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:763) at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:433) at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:220) 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:313) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740) 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: org.jetbrains.skiko.LibraryLoadException: Cannot find skiko-windows-x64.dll.sha256, proper native dependency missing. at org.jetbrains.skiko.Library.findAndLoad(Library.kt:105) at org.jetbrains.skiko.Library.load(Library.kt:59) at org.jetbrains.skiko.SkiaLayer.<clinit>(SkiaLayer.awt.kt:27) ... 31 more
と出て、ウィンドウが表示されない
該当のソースコード
Main.kt
kotlin
1// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 2import androidx.compose.material.MaterialTheme 3import androidx.compose.desktop.ui.tooling.preview.Preview 4import androidx.compose.material.Button 5import androidx.compose.material.Text 6import androidx.compose.runtime.Composable 7import androidx.compose.runtime.getValue 8import androidx.compose.runtime.mutableStateOf 9import androidx.compose.runtime.remember 10import androidx.compose.runtime.setValue 11import androidx.compose.ui.window.Window 12import androidx.compose.ui.window.application 13 14@Composable 15@Preview 16fun App() { 17 var text by remember { mutableStateOf("Hello, World!") } 18 19 MaterialTheme { 20 Button(onClick = { 21 text = "Hello, Desktop!" 22 }) { 23 Text(text) 24 } 25 } 26} 27 28fun main() = application { 29 Window(onCloseRequest = ::exitApplication) { 30 App() 31 } 32} 33
build.gradle.kts
kotlin
1import org.jetbrains.compose.compose 2import org.jetbrains.compose.desktop.application.dsl.TargetFormat 3import org.jetbrains.kotlin.gradle.tasks.KotlinCompile 4 5plugins { 6 kotlin("jvm") version "1.6.10" 7 id("org.jetbrains.compose") version "1.1.0" 8} 9 10group = "me.e331" 11version = "1.0" 12 13repositories { 14 google() 15 mavenCentral() 16 maven("https://maven.pkg.jetbrains.space/public/p/compose/dev") 17} 18 19dependencies { 20 implementation(compose.desktop.currentOs) 21} 22 23tasks.withType<KotlinCompile> { 24 kotlinOptions.jvmTarget = "11" 25} 26 27compose.desktop { 28 application { 29 mainClass = "MainKt" 30 nativeDistributions { 31 targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) 32 packageName = "untitled5" 33 packageVersion = "1.0.0" 34 } 35 } 36} 37 38tasks.jar { 39 manifest { 40 attributes["Main-Class"] = "MainKt" 41 } 42 configurations["compileClasspath"].forEach { file: File -> 43 from(zipTree(file.absoluteFile)) 44 } 45 duplicatesStrategy = DuplicatesStrategy.INCLUDE 46}
補足情報(FW/ツールのバージョンなど)
OS:Windows11Pro 21H2
JDK:temurin-16
IDE:intellij idea 2022.2.2
Kotlinバージョン:1.6.10
Composeバージョン:1.1.0
あなたの回答
tips
プレビュー