Android Kotlin:java.lang.NoClassDefFoundError:<KotlinObject>的解析失败

我们的Android应用程序的每一秒运行,我们得到一个崩溃说 java.lang.NoClassDefFoundError: Failed resolution of: Lin/blahapp/xxx/BlahUtil BlahUtil是一个带有@JvmStatic标注的kotlin对象。 我从Android应用程序的其余部分(All in java)调用这些静态方法。 我们使用multidex 1.0.1。 我在android studio 2.1.2上,使用JDK 7。 相关的gradle配置: compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 16 targetSdkVersion 23 } dexOptions { incremental true dexInProcess true javaMaxHeapSize "10g" preDexLibraries true } buildscript { ext.kotlin_version = '1.0.3' dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } apply plugin: 'kotlin-android' dependencies { […]

Kotlin Firebase反序列化

我试图从Kylin反序列化Firebase到POJO的数据,这是我的POJO类: class Message { var number: String ?= null var message: String? = null var timestamp: Long = 0L var isHandled: Boolean ?= false var type:String ?=null } 这是我从Firebase检索数据的代码 val query = Fire.REF.child("sms").orderByChild("type").equalTo("outbox-unsent") query.addChildEventListener(object : ChildEventListener { override fun onChildAdded(dataSnapshot: DataSnapshot, key: String) { val outbox = dataSnapshot.getValue(Message::class.java) Log.d("BS", "Background Service $outbox") } //…… }); […]

匕首2静态提供者方法在kotlin

随着最近版本的匕首2所做的改进之一是具有静态提供方法的可能性。 简单如此: @Provides static A providesA() { return A(); } 我想知道在kotlin中如何去做这件事? 我试过了 @Module class AModule { companion object { @JvmStatic @Provides fun providesA(): A = A() } } 但是我收到错误消息: @Provides methods can only be present within a @Module or @ProducerModule 我猜这里的伴侣对象正在发生什么事情,但是我对Kotlin来说是一个很新的东西,我不确定如何做到这一点。 这甚至有可能吗? 谢谢!

为什么kotlin放弃“新”关键字?

为什么kotlin放弃新的关键字? 这使得查看函数调用和对象分配之间的区别更加困难。

Kotlin替换为Groovy XmlSlurper&MarkupBuilder

我以为我会用我们的Gradle构建脚本中的Kotlin代替Groovy,这样我就可以开始学习Kotlin了,但是我遇到的第一个问题是试图寻找一些可以代替XmlSlurper&MarkupBuilder的类或库。 有人可以建议一个图书馆或班级使用? def entries = new XmlSlurper().parse("${projectDir}/src/release/res/values/app_settings.xml") def fileLocation = "${projectDir}/src/debug/res/xml/env_prod.xml" println "XML file location = ${fileLocation}" def writer = new FileWriter(new File(fileLocation)) def xmlOut = new MarkupBuilder(writer) xmlOut.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8") xmlOut.Environment { entries.string.each { def name = it.@name.toString() def body = it.text() if (name.startsWith('default_')) { // don't copy production omniture when we're doing […]

Kotlin – NoSuchMethodError实例化Throwable时

尝试实例化Throwable对象会引发以下错误 java.lang.NoSuchMethodError: No direct method <init>(Ljava/lang/String;Ljava/lang/Throwable;ILkotlin/jvm/internal/DefaultConstructorMarker;)V in class Ljava/lang/Throwable; or its super classes (declaration of 'java.lang.Throwable' appears in /system/framework/core-libart.jar) 我尝试的不同方式是: val s = Throwable() val t = Throwable("This is a message") 我观察到的一些事情(在Mac上使用Android Studio): 在Java类中,“Command + click”ing Throwable将我带到java.lang.Throwable而从Kotlin类中,我带到了Throwable中的Throwable定义 我尝试使用val s = java.lang.Throwable()但它甚至不会编译 我正在使用Kotlin版本1.0.0-beta-2423 我错过了一些非常明显的东西吗

在kotlin的片段

我卡在我的应用程序,因为我必须做一个片段,在导航抽屉kotlin ..任何人都可以帮忙吗? 我在网上搜索了很多东西,但是我还没有找到任何东西…在这里是两个项目,我已经做了主要活动,我希望在片段中也有。 override fun onNavigationItemSelected(item: MenuItem): Boolean { // Handle navigation view item clicks here. when (item.itemId) { R.id.home -> { } R.id.subjects -> { val intent = Intent(this, SubjectsActivity::class.java) startActivity(intent) } } drawer_layout.closeDrawer(GravityCompat.START) return true }

Kotlin可重复@annotations不能在jdk-8上工作

我已经在@Parameter中声明了一个可重复的注解 kotlin如下: @Repeatable annotation class Parameter(val name: String); 但是当我如下所示使用它时,编译器会报告一个错误: 1.8之前的JVM版本只能重复带有源保留的注释 @Parameter("foo") @Parameter("bar") fun repeat() = 1; 我确定我正在使用jdk-8 kotlin 。 而对于kotlin-1.1.2 gradle插件,选项jvmTarget也被设置为1.8 。 问:为什么它不能正常工作? sourceCompatibility = 1.8 targetCompatibility = 1.8 compileKotlin { kotlinOptions{ jvmTarget = "1.8" } }

Karma无法解决kotlin-frontend-plugin中的依赖“kotlin”

我一直试图让这个工作一天左右,现在没有运气。 Webpack似乎没有注入kotlin npm模块到我的测试中,即使它是由webpack加载的。 所以它会抛出下面的错误,说它找不到它。 这里是错误日志: Asset Size Chunks Chunk Names main 1.55 MB 0 [big] main classes/java/test/vuekt_test.js 1.37 MB 1 [big] classes/java/test/vuekt_test.js chunk {0} main (main) 1.55 MB [entry] [0] ./~/process/browser.js 5.42 kB {0} {1} [1] ./~/kotlin/kotlin.js 1.31 MB {0} {1} [2] ./js/kitchensink/kotlin/MyComponent.html 2.59 kB {0} {1} [3] ./js/kitchensink/kotlin/VueApp.html 725 bytes {0} {1} [4] ./~/vue/dist/vue.runtime.esm.js […]

要求在Kotlin中使用“allOf”的批注注释

在Kotlin中,我想添加一个与Java中的RequiresPermission批注等价的方法批注,指出需要多个批准权限: @RequiresPermission(allOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION}) public Location getLocation() { // … } 我怎样才能在Kotlin中编写这个注释?