在使用maven进行编译期间,当Kotlin运行时,在编译时间为40秒的时间内,在[[DEBUG]配置编译环境]中停留了20-30秒。 有没有办法减少这个时间? [INFO] Kotlin Compiler version 1.0.6-release-127 [INFO] Compiling Kotlin sources from [/Users/jacksenkline/Desktop/api/src/main/java] [DEBUG] Classpath: /Users/jacksenkline/Desktop/api/target/api-0.1.0-SNAPSHOT/WEB-INF/classes:/Users/jacksenkline/.m2/repository/com/google/appengine/appengine-api-1.0-sdk/1.9.48/appengine-api-1.0-sdk-1.9.48.jar:/Users/jacksenkline/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar:/Users/jacksenkline/.m2/repository/jstl/jstl/1.2/jstl-1.2.jar:/Users/jacksenkline/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.0.6/kotlin-stdlib-1.0.6.jar:/Users/jacksenkline/.m2/repository/org/jetbrains/kotlin/kotlin-runtime/1.0.6/kotlin-runtime-1.0.6.jar:/Users/jacksenkline/.m2/repository/org/json/json/20160810/json-20160810.jar:/Users/jacksenkline/.m2/repository/redis/clients/jedis/2.9.0/jedis-2.9.0.jar:/Users/jacksenkline/.m2/repository/org/apache/commons/commons-pool2/2.4.2/commons-pool2-2.4.2.jar:/Users/jacksenkline/.m2/repository/io/jsonwebtoken/jjwt/0.7.0/jjwt-0.7.0.jar:/Users/jacksenkline/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.2/jackson-databind-2.8.2.jar:/Users/jacksenkline/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar:/Users/jacksenkline/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.2/jackson-core-2.8.2.jar [DEBUG] Classes directory is /Users/jacksenkline/Desktop/api/target/api-0.1.0-SNAPSHOT/WEB-INF/classes [INFO] Module name is api [DEBUG] Invoking compiler org.jetbrains.kotlin.cli.jvm.K2JVMCompiler@f48d6f2 with arguments: [DEBUG] destination=/Users/jacksenkline/Desktop/api/target/api-0.1.0-SNAPSHOT/WEB-INF/classes [DEBUG] classpath=/Users/jacksenkline/Desktop/api/target/api-0.1.0-SNAPSHOT/WEB-INF/classes:/Users/jacksenkline/.m2/repository/com/google/appengine/appengine-api-1.0-sdk/1.9.48/appengine-api-1.0-sdk-1.9.48.jar:/Users/jacksenkline/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar:/Users/jacksenkline/.m2/repository/jstl/jstl/1.2/jstl-1.2.jar:/Users/jacksenkline/.m2/repository/org/jetbrains/kotlin/kotlin-stdlib/1.0.6/kotlin-stdlib-1.0.6.jar:/Users/jacksenkline/.m2/repository/org/jetbrains/kotlin/kotlin-runtime/1.0.6/kotlin-runtime-1.0.6.jar:/Users/jacksenkline/.m2/repository/org/json/json/20160810/json-20160810.jar:/Users/jacksenkline/.m2/repository/redis/clients/jedis/2.9.0/jedis-2.9.0.jar:/Users/jacksenkline/.m2/repository/org/apache/commons/commons-pool2/2.4.2/commons-pool2-2.4.2.jar:/Users/jacksenkline/.m2/repository/io/jsonwebtoken/jjwt/0.7.0/jjwt-0.7.0.jar:/Users/jacksenkline/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.8.2/jackson-databind-2.8.2.jar:/Users/jacksenkline/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.8.0/jackson-annotations-2.8.0.jar:/Users/jacksenkline/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.8.2/jackson-core-2.8.2.jar [DEBUG] includeRuntime=false [DEBUG] jdkHome=(null) [DEBUG] noJdk=false [DEBUG] noStdlib=true [DEBUG] noReflect=false [DEBUG] module=(null) [DEBUG] script=false [DEBUG] kotlinHome=(null) [DEBUG] moduleName=api [DEBUG] […]
我使用源代码生成工具( antlr )为我的项目生成Java源文件。 但是,我写的大部分,如果不是全部我的代码,在Kotlin。 Kotlin已经提供了很好的Java互操作性 ,所以使用生成的源代码不是问题。 但是,由于Kotlin如何将Java的可空types引入一个无效的系统 ,所以我失去了大部分使用Kotlin的无效安全性。 最好的我有平台types警告(使types明确,以避免微妙的错误); 最糟糕的是我有意外的崩溃和微妙的错误。 但是,Kotlin会尊重可空性注释 ,例如JSR-305,FindBugs,Lombok,Eclipse和JetBrains各自的@Nullable / @NonNullforms,将这些forms作为合适的非空types或可选的。 因为代码是生成的,我有权访问源代码(并了解它是如何工作的),所以我知道哪些函数可以/不能返回null ,并且要注释它们,以便将它们整齐地包含到我的空安全代码中。 但是,我不能直接将注释添加到代码中,因为它是在构建步骤中生成的,并会覆盖任何手动更改。 有没有可能/什么是最好的方式来注释生成的Java源的空性为了在空安全代码中使用的目的?
我将简单的Kitlon文件转换成库,文件是: Display.kt : package hello fun main(args: Array) { println(“Hello World!”) } 已经被编译成库使用命令: kotlinc Display.kt -d Display.jar 输出已被交叉检查,使用命令工作: kotlin -classpath Display.jar hello.DisplayKt 然后我把它移动到文件夹src/main/resources ,然后尝试从另一个应用程序调用它,使用下面的代码: Hello.kt : package hello import hello.DisplayKt fun main(args: Array) { println(“Hi”) } 并定义build.gradle文件如下(试图把我读到的所有选项来解决我的情况): // set up the kotlin-gradle plugin buildscript { ext.kotlin_version = ‘1.1.2-2’ repositories { mavenCentral() } dependencies { classpath […]
假设KeyAdapter是一个抽象类,有几个可以被覆盖的方法。 在Java中我可以这样做: KeyListener keyListener = new KeyAdapter() { @Override public void keyPressed(KeyEvent keyEvent) { // … } }; 如何在Kotlin中做同样的事情?
Hej大家,我正在尝试从java 8迁移一个小的spring引导项目到kotlin。 我碰到一个问题,我有以下配置类 @EnableCaching @Configuration open class CacheConfiguration : CachingConfigurer { @Bean override fun cacheManager(): CacheManager { return ConcurrentMapCacheManager() } @Bean override fun cacheResolver(): CacheResolver { return SimpleCacheResolver(cacheManager()) } /** * Simple Key Generator * @return not null */ @Bean override fun keyGenerator(): KeyGenerator { return SimpleKeyGenerator() } @Bean override fun errorHandler(): CacheErrorHandler { return […]
当使用Kotlin BeanDefinitionDsl将bean添加到上下文中时,似乎不会调用@PostConstruct方法。 这发生在我自己的项目中,但创建一个简单的方法来重现它,这就是我所做的。 我分叉使用Kotlin DSL的Spring示例https://github.com/sdeleuze/spring-kotlin-functional 我添加了@PostConstruct到UserHandler类。 (更多细节在下面) 我把结果推到这里: https : //github.com/benjishults/spring-kotlin-functional 所以你所要做的就是分叉我的回购,并做一个gradle运行。 我的问题是: 我不应该期望@PostConstruct被调用,因为我把这个类作为一个bean来使用吗? 我错过了一个步骤? 这是一个spring的bug? 如果你不想拉我的回购,这里是更多的细节,我做了什么。 我将其添加到UserHandler类: @PostConstruct fun afterPropertiesSet() { System.out.println(“AFTER PROPERTIES SET CALLED”) } 以及导入和Gradle依赖。 UserHandler bean被拉入到上下文中,使用一个调用bean beans的bean方法,如下所示: fun beans() = beans { bean() // … } 这是带来的上下文: beans().initialize(context)
我正在与Room持久性库集成。 我在Kotlin有一个数据类: @Entity(tableName = “story”) data class Story ( @PrimaryKey val id: Long, val by: String, val descendants: Int, val score: Int, val time: Long, val title: String, val type: String, val url: String ) @Entity和@PrimaryKey注释用于Room库。 当我尝试构建时,错误是失败的: Error:Cannot find setter for field. Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’. > Compilation failed; see the compiler error output […]
假设我只想要在生成的equals和hashCode实现中包含一个或两个字段(或者可能排除一个或多个字段)。 对于一个简单的类,例如: data class Person(val id: String, val name: String) Groovy有这样的: @EqualsAndHashCode(includes = ‘id’) 龙目岛有这样的: @EqualsAndHashCode(of = “id”) 在Kotlin做这个的惯用方式是什么? 我的方法到目前为止 data class Person(val id: String) { // at least we can guarantee it is present at access time var name: String by Delegates.notNull() constructor(id: String, name: String): this(id) { this.name = name } } 只是感觉错了,虽然…我真的不希望name是可变的,额外的构造函数定义是丑陋的。
Java界面: public interface IUserSettingManager { UserSettingApi updateSetting(Long userId, UserSetting userSettingNew) throws FailUpdateUserSettingException; } Kotlin ejb: @Stateless @Local(IUserSettingManager::class) open class UserSettingManager : DataManager(), IUserSettingManager { private companion object { private val LOG = LoggerFactory.getLogger(UserSettingManager::class.java) } @Throws(FailUpdateUserSettingException::class) private fun validate(userSetting: UserSetting) { if (userSetting.avatar?.length ?: 0 > DBConstant.UUID_VARCHAR_SIZE) { throw FailUpdateUserSettingException(“avatar length”) } } @Throws(FailUpdateUserSettingException::class) override fun […]
我试图通过以下博客运行Kotlin / Native v0.3 win32示例: https://blog.jetbrains.com/kotlin/2017/06/kotlinnative-v0-3-is-out/ 我按照博客末尾的说明下载了x86-64 Windows zip文件。 我运行kotlin-native-windows-0.3\samples>gradlew.bat ,它下载了一些东西,然后说“构建成功”。 (我不确定这一步是否有必要) 2.1但是,如果我在这个文件夹中运行kotlin-native-windows-0.3\samples>gradlew build ,我得到了一些失败: C:\ Users \ OO \ Documents \ kotlin-native-windows-0.3 \ samples> gradlew build:concurrent:assemble UP-TO-DATE:concurrent:check UP-TO-DATE:concurrent:downloadKonanCompiler:concurrent:genMessageChannelInteropStubs UP-TO -DATE:concurrent:compileCpp FAILED 失败:生成失败,出现exception。 出了什么问题:执行任务’:concurrent:compileCpp’失败。 启动进程“command”./buildCpp.sh时出现问题 尝试:运行–stacktrace选项来获取堆栈跟踪。 运行–info或–debug选项来获得更多的日志输出。 构建失败 然后运行kotlin-native-windows-0.3\samples\win32>build.bat ,我又得到了一个错误。 C:\Users\OO\Documents\kotlin-native-windows-0.3\samples\win32>build.bat exception: java.lang.IllegalStateException: Could not find “win32” in [C:\Users\OO\Documents\kotlin-native-windows-0.3\samples\win32, C:\Users\OO\.konan\klib, C:\Users\OO\DOCUME~1\KOTLIN~1.3\bin\..\klib]. at org.jetbrains.kotlin.backend.konan.library.KonanLibrarySearchPathResolver.resolve(SearchPathResolver.kt:71) at org.jetbrains.kotlin.backend.konan.KonanConfig$librariesFound$2.invoke(KonanConfig.kt:70) […]