在SBT / Play框架上运行Kotlin代码?

我是PlayFramework的粉丝,但是我对SBT / Scala的经验有限。 我一直在努力使用Kotlin,所以我试图让Kotlin在SBT / PlayFramework上运行。 我使用了Gradle Build系统的Kotlin,但是这需要我应用Kotlin Gradle插件。 不知道如何做SBT的等价物。 这里是你的Play基本build.sbt。 我将如何去添加Kotlin? name := """KotlinTestServer""" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayJava) scalaVersion := "2.11.1" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, javaWs ) 我必须添加"org.jetbrains.kotlin" % "kotlin-stdlib" % "0.10.195"作为库依赖项,但还有什么?

Kotlin Char compareTo失败

我在Kotlin中有下面的代码片段: val pair: Pair<Char,Char> = 'z' to 'z' val comparison = pair.first.compareTo(pair.second) println(comparison) 当我尝试运行它时,它在第二行失败,出现以下异常: java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.Number IDE(IntelliJ)不会抱怨任何错误的类型。 这个问题与Chars来自Pair<Char, Char>因为'z'.compareTo('z')工作正常。 你知道科特林如何解决以下的电话? 我正在使用Kotlin 1.0.4

Kotlin和新的ActivityTestRule:@规则必须公开

我正在尝试在Kotlin中为我的Android应用程序进行UI测试。 由于使用ActivityTestRule的新系统,我不能使它工作:编译正确,在运行时,我得到: java.lang.Exception: The @Rule 'mActivityRule' must be public. at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90) at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67) at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55) at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50) at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170) at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103) at org.junit.runners.ParentRunner.validate(ParentRunner.java:344) at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74) at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55) at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:38) at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:36) at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:57) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:45) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runner.Computer.getRunner(Computer.java:38) at org.junit.runner.Computer$1.runnerForClass(Computer.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:98) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84) at […]

如何在Kotlin中运行编译后的类文件?

Jetbrains提供了一些文档,但我找不到如何运行Kotlin的编译类文件。 hello.kt: fun main(args : Array<String>) { println("Hello, world!") } 编译: $ kotlinc -out dist -src hello.kt $ ls dist namespace.class $ java dist/namespace Exception in thread "main" java.lang.NoClassDefFoundError: dist/namespace (wrong name: namespace) $ java -jar /usr/local/kotlin/lib/kotlin-runtime.jar Failed to load Main-Class manifest attribute from /usr/local/kotlin/lib/kotlin-runtime.jar 如何运行Kotlin程序?

Gradle kotlin脚本,>找不到id为`kotlin`的插件

我试图用Kotlin脚本将我的一个项目迁移到Gradle。 这些是我的步骤: 用这个替换/gradle/wrapper/gradle-wrapper.jar 更新gradle/wrapper/gradle-wrapper.properties与此处相同 创建了相应的build.gradle.kts 设置settings.gradle为rootProject.buildFileName = 'build.gradle.kts' 在这一点上,Intellij检测到并建议: 您可以配置Gradle包装来使用与源的分配。 它将为IDE提供Gradle API / DSL文档。 – >好的,应用建议! Gradle'hello-kotlin'项目刷新失败 错误:找不到id为'kotlin'的插件。 然后我也试着尝试一个官方样本 : 克隆回购 打开样品 同样的错误 …我究竟做错了什么? 我回到了官方示例,试图使缓存无效并重新启动,但没有奏效 我试图删除 apply { plugin("kotlin") } 刷新Gradle,再次添加,刷新Gradle,它工作 如果我打开一个src文件,Intellij说: Kotlin没有配置 然而,样本似乎现在运行.. Intellij 2017.1 EAP Kotlin 1.1m04

Kotlin Gradle问题

我创建了一个用Kotlin语言编写的项目的Jar。 Jar包含以下文件夹: com jet kotlin meta-inf okio org 然后我创建了一个android项目,并添加Kotlin和Jar作为依赖项。 当我尝试执行hello world app时,会抛出以下异常。 com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-openjdk-amd64/bin/java'' finished with non-zero exit value 1 我的应用程序构建gradle文件是 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' android { compileSdkVersion 22 buildToolsVersion "22.0.1" defaultConfig { applicationId "abc.xyz.kotlin" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false […]

使用Kotlin的Maven依赖不引入Kotlin类

我有两个项目,一个是依赖于另一个。 我已经将依赖项目转换为Kotlin,但是现在当maven从本地maven仓库获取发布的依赖关系时,父项目并没有依赖于Kotlin内部库。 大纲: Main Project ↳ Now-Kotlin Project ↳ Kotlin Std-lib 运行主项目时,会导致java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics异常。 现在Kotlin项目有kotlin-maven-plugin插件和在它的pom.xml中定义的kotlin-stdlib 。 父项目有被列为依赖项的现在的Kotlin项目,它被正确地导入,它的类被找到和使用,等等…在IntelliJ中就好了。 编译和启动tomcat上主应用程序的应用程序,直到第一次从现在的Kotlin项目中调用代码, org.apache.catalina.core.ApplicationContext log SEVERE: StandardWrapper.Throwable java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics …. java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics 我的假设是,Kotlin库将遵循Maven的正常依赖关系规则,并且来自kotlin-stdlib的org.jetbrains.kotlin包将被包含在任何传递依赖关系中。 主要项目中包含这些依赖关系的正确方法是什么? 更新 主项目mvn dependency:tree相关部分: [INFO] — maven-dependency-plugin:2.10:tree (default-cli) @ example-core — [INFO] com.example:example-core:jar:1.17.0-SNAPSHOT [INFO] +- com.example.service.search:search-client:jar:kotlin:2.0.3-SNAPSHOT:compile 主要项目POM … <dependency> <groupId>com.example.service.search</groupId> <artifactId>search-client</artifactId> <version>2.0.3-SNAPSHOT</version> <scope>compile</scope> […]

如何在Kotlin中实现Builder模式?

嗨,我是Kotlin世界的新手。 我喜欢迄今为止所看到的,并开始考虑将我们在应用程序中使用的一些库从Java转换为Kotlin。 这些库充满了Pojos,包括setter,getters和Builder类。 现在我已经用Google搜索了解在Kotlin中实施建筑商的最佳方法,但没有成功。 第二次更新:现在的问题是如何编写一个简单的POJO的Builder设计模式与Kotlin中的一些参数? 下面的代码是我通过编写java代码然后使用eclipse-kotlin-plugin转换成Kotlin的尝试。 class Car private constructor(builder:Car.Builder) { var model:String? = null var year:Int = 0 init { this.model = builder.model this.year = builder.year } companion object Builder { var model:String? = null private set var year:Int = 0 private set fun model(model:String):Builder { this.model = model return this } fun year(year:Int):Builder […]

为什么Kotlin插件为Android项目添加了kotlin-stdlib-jre7(不是kotlin-stdlib)参考

Android Studio 2.3.3; Kotlin插件:1.1.4; Kotlin编译器:Kotlin到JVM:1.6。 Android Studio>新建项目>在Project action中配置Kotlin将kotlin-stdlib-jre7的参考添加到gradle文件。 我期望kotlin-stdlib,因为我们Kotlin的目标JVM是1.6。 没有找到好的解释。 例如, 这个答案说明 kotlin-stdlib-jre7工件不应该在Android上工作,它目前仅支持Java 6平台。 在定位Android时,应该使用为JRE 6构建的kotlin-stdlib

Kotlin中的静态扩展方法

你如何在Kotlin中定义一个静态的扩展方法? 这甚至有可能吗? 我目前有一个扩展方法如下所示。 public fun Uber.doMagic(context: Context) { // … } 上面的扩展可以在一个实例上调用。 uberInstance.doMagic(context) // Instance method 但是我如何使它静态方法如下所示。 Uber.doMagic(context) // Static or class method