java .lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics в приложении Spring Boot - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть приложение Kotlin Spring Boot с kotlin .gradle

dependencies {
    implementation(kotlin("stdlib-jdk8"))
    implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion")

Так что stdlib включен в проект.

В моей толстой банке я тоже вижу библиотеку по пути BOOT-INF / lib

kotlinstdlib

Но почему-то, когда я java -jar app.jar

получаю:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)
Caused by: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
        at dev.nsud.ApplicationKt.main(Application.kt)
        ... 8 more
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 9 more

Каким-то образом это прекрасно работает в Intellij IDEA.

1 Ответ

0 голосов
/ 05 февраля 2020

Если вы хотите создать толстую банку, вы должны добавить атрибуты манифеста к вашему build.gradle, и он должен выглядеть следующим образом:

jar {
    manifest {
        attributes 'Main-Class': 'com.your.main.class.Name'
    }

    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

Если у вас уже есть атрибуты манифеста на месте, я предполагаю, что проблема Это то, как вы определили from, поскольку оно должно быть configurations.runtimeClasspath вместо configurations.compile

ПРИМЕЧАНИЕ : Было бы здорово, если бы я мог видеть ваши полные build.gradle чтобы понять проблему дальше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...