Tag: gradle

如何为TestNG Kotlin项目添加gradle支持?

我目前有一个testot安装Kotlin项目,当我右键单击src/test/kotlin文件夹,并选择Run All Tests 。 有用。 但是当我尝试用gradle输出一个源代码jar(包含测试用例)时,它开始抱怨: 18:38:08: Executing task ‘sourcesJar’… e: /Users/a/codes/objjson/src/test/kotlin/tests.kt: (7, 12): Unresolved reference: testng e: /Users/a/codes/objjson/src/test/kotlin/tests.kt: (22, 5): Unresolved reference: assertEquals e: /Users/a/codes/objjson/src/test/kotlin/tests.kt: (60, 6): Unresolved reference: Test ……. :compileKotlin FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ‘:compileKotlin’. > Compilation error. See log for […]

无法让dokka在gradle / android项目上生成kotlin文档

我正在关注https://github.com/Kotlin/dokka中的gradle插件部分。 我也尝试了https://github.com/JetBrains/kotlin-examples/tree/master/gradle/dokka-gradle-example中的dokka-gradle-example示例。 我使用的版本是: android: ‘23.1.1’ dokka: ‘0.9.6’ gradle-android-plugin: ‘1.5.0’ kotlin: ‘1.0.0-rc-1036’ 但我也尝试过从0.9到0.9.7的Dokka版本。 输出的相关部分是: … :app:dokka FAILED :app:dokka (Thread[Daemon worker Thread 9,5,main]) completed. Took 0.766 secs. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ‘:app:dokka’. > com.intellij.mock.MockComponentManager.getPicoContainer()Lorg/picocontainer/MutablePicoContainer; * Try: Run with –debug option to get more log output. * Exception […]

使用命令行参数的Kotlin Gradle Spring bootRun任务

我有一个像下面的命令行亚军Kotlin春季启动应用程序。 @SpringBootApplication class MySpringApplication : CommandLineRunner { override fun run(vararg args: String?) { println(args[0]) } } fun main(args: Array) { val app = SpringApplication(MySpringApplication::class.java) app.setBannerMode(Banner.Mode.OFF) app.run(*args) } 我想知道如何通过命令行参数,当我使用gradle命令,./ ./gradlew bootRun ?

Kotlin – 间歇性的“错误的类文件”错误

从今天开始,当我尝试构建我的Kotlin Android应用程序时,在我的Gradle构建中遇到了以下错误: Error:cannot access Baz bad class file: /Users/me/projects/site/android/app/build/tmp/kapt/debug/classFileStubs/com/company/foo/Bar$Baz.class bad RuntimeInvisibleParameterAnnotations attribute: Baz(FragmentManager) Please remove or make sure it appears in the correct subdirectory of the classpath. 它指向一个扩展android.support.v4.app.FragmentStatePagerAdapter的内部类Baz。 我可以暂时避开这个错误,通过评论这个类,并在外部类中引用它,并重建。 错误消失了,但显然这个类不再存在,所以其他的东西在运行时中断。 然后,如果我取消注释并构建,它将适用于一些构建。 然后错误回来了。 冲洗并重复。 我想关闭Genymotion模拟器可能会触发它。 任何人遇到这个,或有任何想法? 这是有问题的代码: class Bar : Fragment() { @Inject lateinit var api:ApiRequester var data : ArrayList = ArrayList() override fun onCreateView(inflater: LayoutInflater?, […]

Kotlin和Gradle没有Maven中央?

我正在尝试在IDEA中构建一个Kotlin项目,而不使用Maven Central(我在防火墙之后)。 我在本地创建了一些flatDir存储库,以获得必要的依赖关系,这些依赖关系如文档中所述进行设置和编译。 我正在进步,消除错误只是为了获得新的。 但我无法弄清楚我在这里做错了什么。 当我尝试导入Gradle项目时,Intellij IDEA正在抛出这个对话框。 建立脚本错误,发现不支持的Gradle DSL方法:’compile()’! 可能的原因可能是: – 您正在使用的Gradle版本中没有方法(修复Gradle设置) – 您没有应用提供方法的Gradle插件(Apply Gradle插件) – 或者在构建脚本中存在错误资源) 如何让Kotlin和Gradle在离线状态下在本地建立? UPDATE 我试图运行以下修改 buildscript { repositories { flatDir { dirs += ‘H:/Processes/Development/libraries/kotlin’ dirs += ‘H:/Processes/Development/libraries/apache-commons’ } } dependencies { classpath ‘org.apache.commons:commons-lang3:3.+’ classpath ‘org.jetbrains.kotlin:kotlin-runtime:1.0.+’ classpath ‘org.jetbrains.kotlin:kotlin-compiler-embeddable:1.0.+’ classpath ‘org.jetbrains.kotlin:kotlin-stdlib:1.0.+’ classpath ‘org.jetbrains.kotlin:kotlin-gradle-plugin:1.0.+’ classpath ‘org.jetbrains.kotlin:kotlin-gradle-plugin-core:1.0.+’ classpath ‘org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.0.+’ } } apply plugin: ‘kotlin’ […]

不能用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” } […]

Kotlin代码编译为Jar以用于Java Project?

我已经在Kotlin中编写了一个Java库,我想将它编译成Java和Kotlin应用程序可用的jar。 这个想法是,jar应该能够在Java项目和Kotlin项目上工作。 做一个简单的./gradlew clean assemble生成一个jar,当我检查jar时,我可以看到几个导入不包含在普通的Java应用程序也不能访问的jar中: import jet.runtime.typeinfo.JetValueParameter; import kotlin.jvm.internal.Intrinsics; import kotlin.jvm.internal.KotlinClass; import kotlin.jvm.internal.KotlinClass.Kind; import kotlin.jvm.internal.KotlinSyntheticClass; import kotlin.jvm.internal.KotlinSyntheticClass.Kind; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; 我怎么能包括在jar中的上述依赖项? 现在这个jar子只有30kb。 我宁愿不必包含整个Kotlin运行时,但只能在使用的组件中编译。

与Android和桌面项目共享一个Kotlin模块

我有一个使用LibGDX游戏框架的游戏。 目前我所针对的平台是Desktop(PC,Mac,Linux),通过独立于平台的jar和Android。 该项目托管在https://github.com/NoxHarmonium/project-whiplash如果您需要,请随时查看。 大部分代码位于一个名为core的模块中,完全由Kotlin编写。 该模块已链接到桌面和Android项目中。 这适用于Android版本7.1+和桌面。 对于所有其他版本的Android,我在匿名函数上得到一堆java.lang.NoClassDefFoundErrorexception: val objectObservable = this.observableCache.computeIfAbsent(assetRef, fun(assetRef: AssetRef): Observable { return Async.start(fun(): T { … }).observeOn(this.eventLoopScheduler) }) exception示例: java.lang.NoClassDefFoundError: com.projectwhiplash.utils.assets.LibGdxDataManager$objectMapFromYaml$objectMapObservable$1 这似乎是由于Kotlin默认的目标(1.8)与旧版Android支持的JVM级别(1.6)不兼容。 我可能是错的,但这解释了为什么最新版本的Android工作,因为它支持更高版本的JVM。 解决方案应该像强制Kotlin发射1.6版本的JVM字节码一样简单,但我似乎无法解决。 如果你直接将Kotlin编译成Android,这似乎是通过使用kotlin-android Gradle插件来处理的。 不幸的是,我不能使用这个插件的核心模块,因为它不应该有任何Android的依赖。 我尝试使用https://kotlinlang.org/docs/reference/using-gradle.html#compiler-options中提到的构建设置来覆盖JVM版本,如下所示: compileKotlin { kotlinOptions { jvmTarget = “1.6” } } 然而,无论我把哪个Gradle文件放进去,它似乎都不起作用。事实上,当我尝试使用Intellij时,显示出“Can not resolve symbol’kotlinOptions’”错误。 Kotlin团队可能已经改变了一些东西,文档还没有更新。 我可以在Intellij模块设置中手动覆盖Kotlin设置,但每次同步gradle项目时都会覆盖Kotlin设置,这不是一个好的长期解决方案。 该项目旨在独立于IDE。 有谁知道如何设置核心模块,以最大限度地兼容老版本的Android? 我目前有最低的API级别设置为9,因为这是目前的LibGDX默认,但我愿意设置这个更高,如果太难以目标如此低的API级别。 编辑1: 我只是提取由核心模块生成的jar文件,并使用javap工具检查类文件。 我在随机类文件上运行以下命令 java -verbose […]

如何调试NoClassDefFoundError(Gradle,Kotlin)

运行时我的kotlin项目,我得到以下错误: java.lang.NoClassDefFoundError: com/julianjarecki/latextemplates/lib/jtwig/RequireNodeParser at com.julianjarecki.latextemplates.lib.jtwig.RequireNodeParserProvider.(RequireNodeParserProvider.kt:8) at com.julianjarecki.latextemplates.lib.jtwig.RequireExtension.configure(RequireExtension.kt:11) at org.jtwig.environment.EnvironmentFactory.create(EnvironmentFactory.java:60) at com.julianjarecki.latextemplates.lib.jtwig.LatexTemplate.getLatexRequireEnvironment(LatexParser.kt:76) at com.julianjarecki.latextemplates.lib.jtwig.LatexTemplate.access$getLatexRequireEnvironment$p(LatexParser.kt:68) at com.julianjarecki.latextemplates.lib.jtwig.LatexTemplate$template$2.invoke(LatexParser.kt:73) at com.julianjarecki.latextemplates.lib.jtwig.LatexTemplate$template$2.invoke(LatexParser.kt:68) at com.julianjarecki.latextemplates.lib.UpdatableLazy.getValue(UpdatableLazy.kt:17) at com.julianjarecki.latextemplates.lib.jtwig.LatexTemplate.getTemplate(LatexParser.kt) at com.julianjarecki.latextemplates.view.MainView$root$1$4$1$1$2.invoke(MainView.kt:133) at com.julianjarecki.latextemplates.view.MainView$root$1$4$1$1$2.invoke(MainView.kt:35) at tornadofx.NodesKt$onDoubleClick$1.handle(Nodes.kt:484) at tornadofx.NodesKt$onDoubleClick$1.handle(Nodes.kt) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 事实上,当我查看我的buil文件夹时,RequireNodeParser.class不是它应该在的地方。 这个类在RequireNodeParserProvider中是这样引用的: package com.julianjarecki.latextemplates.lib.jtwig import org.jtwig.parser.addon.AddonParserProvider import org.jtwig.parser.parboiled.node.AddonParser import com.julianjarecki.latextemplates.lib.jtwig.RequireNodeParser class RequireNodeParserProvider : AddonParserProvider { override fun keywords(): MutableCollection = mutableListOf(RequireKeywords.REQUIRE.token) override fun parser(): […]

在Spring Boot项目中使用Gradle从Kotlin测试引用Java代码时未解决的参考

我有一个项目,我正在使用Kotlin和Java代码。 我的主要Kotlin代码(包括@SpringBootApplication主类)在src / main / kotlin中,但是在src / main / java中有一些旧的客户端库代码。 我也在src / test / kotlin有一些测试。 在IntelliJ中,我可以运行测试没有问题,但是当我使用gradle测试运行测试时,我得到错误cannot access class ** Unresolved reference , cannot access class ** 。 我不确定这是为什么发生。 这些错误与Java类中的代码有关。 我的kotlin代码和测试与客户端库代码稍有不同, 我的主要代码位于名为com.sky.vision.playlistapi的包中,客户端库位于名为com.sky.nifty的包中。 我想知道这可能是问题的根源吗? 我的build.gradle文件在这里: buildscript { ext { kotlinVersion = ‘1.2.10’ } } plugins { id ‘java’ id ‘org.springframework.boot’ version ‘1.5.9.RELEASE’ id ‘org.jetbrains.kotlin.jvm’ version’1.2.10′ id ‘org.jetbrains.kotlin.plugin.allopen’ […]