无法使用Gradle和Kotlin运行生成的JAR文件

塞萨尔泳池:

我有一个配置了Gradle和Kotlin的项目。这是一个命令行实用程序,我希望能够从终端运行生成的jar。但是我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
    at com.autentia.impt.MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

我的gradle配置如下:

buildscript {
    ext.kotlin_version = '1.2.20'
    ext.junit_platform_version = '1.0.1'
    ext.junit_version = '5.0.0'
    ext.moshi_version = '1.5.0'
    ext.jna_version = '4.5.0'

    repositories {
        mavenCentral()
    }

    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.junit.platform:junit-platform-gradle-plugin:$junit_platform_version"
    }
}

version '1.0-SNAPSHOT'

apply plugin: 'kotlin'
apply plugin: 'application'
apply plugin: 'org.junit.platform.gradle.plugin'

mainClassName = 'com.autentia.impt.MainKt'

repositories {
    mavenCentral()
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
    implementation "org.jetbrains.kotlin:kotlin-reflect"
    implementation "com.squareup.moshi:moshi:$moshi_version"
    implementation "com.squareup.moshi:moshi-kotlin:$moshi_version"
    implementation "net.java.dev.jna:jna:$jna_version"
    testImplementation("org.junit.jupiter:junit-jupiter-api:$junit_version")
    testRuntime("org.junit.jupiter:junit-jupiter-engine:$junit_version")
}

sourceSets {
    main.kotlin.srcDirs += 'src/main/kotlin'
}

task wrapper(type: Wrapper) {
    gradleVersion = '4.4.1'
}

jar {
    manifest {
        attributes "Main-Class": mainClassName
    }

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

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

我用来生成jar ./gradlew clean build的命令,而我用来运行jar的命令是java -jar build/libs/impt-1.0-SNAPSHOT.jar

我试过下面的官方文档,也我与这些资源的尝试:123没有任何的运气。

Erkut Evirgen:

只需将implementation配置更改为即可compile(至少对于kotlin-stdlib)

compile配置已弃用,应替换为Android的Gradle插件implementationapi在其中。但是,对于kotlin-gradle-plugin来说,我认为您仍然需要compile

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法使用 gradle 生成的 jar 文件找到或加载主类

无法使用Gradle和Intellij导入jar文件依赖项

无法使用Gradle输出jar文件

无法使用Gradle和Kotlin编译项目

无法运行通过gradle编译的groovy代码构建的jar文件

如何使用SBT和Java 1.8生成能够在Java 1.7上运行的jar文件

使用Gradle和Kotlin构建自执行的jar

使用 Gradle 构建 JAR 时生成插件 .dat 文件

在gradle android build中使用progaurd生成jar文件

使用jooq和gradle-jooq-plugin(kotlin)生成代码

QueryDSL:使用 Kotlin 和 Gradle 生成类失败

无法从JAR文件生成程序

无法运行jar文件或Cmd

IntelliJ-Gradle-Kotlin-Micronaut-更改文件不会在“运行”时重新生成类

使用外部和本地库运行jar文件

使用外部jar文件进行编译和运行

无法在WildFly下使用MySQL和Gradle运行IntelliJ项目

运行gradle生成的jar找不到jar条目

无法从Spring Boot,Gradle和IntelliJ-Idea生成可执行jar

无法从春季启动球衣运行生成的jar

无法运行从Scala文件创建的jar文件

仅在gradle中上传war / jar文件(限制zip / tar生成和上传)

在运行时生成JAR文件

在Apache Flink中运行生成的jar文件

在JAR文件和运行时库路径中包括子项目gradle构建输出

无法为Gradle项目创建JAR文件

无法使用Gradle运行TestNG

为什么从Ubuntu软件包的Gradle二进制文件生成Gradle Wrapper JAR校验和不匹配

如何从Ktor Kotlin / Java应用程序使用Gradle构建有效的JAR文件