我有一个项目配置与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
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
。
我试着遵循官方文档,也试着使用这些资源:1、2和3,但没有任何运气。
只需将实现
配置更改为compile
即可。(至少对kotlin-stdlib来说)
不推荐使用compile
配置,应该在Android的Gradle plugin中用实现
或API
来代替,但是对于kotlin-gradle-plugin
,我认为您仍然需要compile。
我正在为unity开发一个android插件,需要生成一个jar文件。为此,我遵循https://stackoverflow.com/a/20446513/3742608中的步骤,将构建变体设置为release,重建项目并执行MakeJar。然而,我的项目确实有gradle只在另一个文件夹“中间”中使用的文件夹: 我将一些内容更改为以下内容,但没关系,不会生成jar文件。 bundles/rele
我已经从spring入门指南下载了源代码(zip文件):http://spring.io/guides/gs/rest-service/ 在文件夹“Complete”中生成整个项目已成功。使用Gradle(Gradle run)运行生成的jar文件也是成功的。但当我尝试在Windows命令行中使用“java-jar build\libs\gs-rest-service-0.1.0.jar”手动运行
我做了一个简单的项目,其中包含一些测试,我希望能够在其他计算机上启动测试。我使用runas构建了这个项目- 错误:在com类中找不到Main方法。实例TestPurchase,请将main方法定义为:publicstaticvoidmain(String[]args)或JavaFX应用程序类必须扩展JavaFX。应用应用 据我所知,TestNG不需要任何主方法,因为有注释。这就引出了一些问题: 我
有谁知道如何使用Gradle制作一个uber/fat/shade sources-jar(和javadoc-jar)? 生成的 Jar 不仅应包含当前项目的源代码,还应包含其依赖项的源代码。我一直在研究,除其他外,一种香草方式和使用Shadow插件的方式。两者都擅长创建一个普通的uber/fat/shade jar,但它们似乎都不支持创建sources-jar的方法。
这是我的com.loloof64.kotlin.exps.multiDeclarations.kt 当我从终端(java-jar myjar.jar)启动jar时,我得到以下stacktrace,告诉我kotlin反射库类丢失了,而且实际上它们还没有添加到jar中。我似乎错过了最终jar中的kotlin-compiler工件类,也错过了kotlin-stdlib源代码,但我不知道如何适应gradl