Kotlin:从java调用时的NoSuchMethod

时间:2017-11-30 02:44:08

标签: kotlin

我打包了一个kotlin项目,当我在其他kotlin项目中使用它时,它按预期工作。但是,从Java项目中使用我在类构造函数上获得异常:

这是SensorData.kt文件

package io.igx.iot.model

import com.fasterxml.jackson.annotation.JsonProperty
import java.time.LocalDate
import java.util.*


/**
 * @author Vinicius Carvalho
 */
data class SensorData(val type: String, val name: String, @JsonProperty("@timestamp") val timestamp: Date, val value: Double, val thermostatId: String)
data class Column(val type: String, val position: Int)
data class Report(val device: String, val id: String, val start: LocalDate, val end: LocalDate)


inline fun String.safeFloat() : Float {
    return try {
        this.toFloat()
    } catch (e: NumberFormatException){
        0.0f
    }
}

inline fun String.safeDouble() : Double {
    return try {
        this.toDouble()
    } catch (e: NumberFormatException){
        0.0
    }
}

inline fun String.safeInt() : Int {
    return try {
        this.toInt()
    } catch (e: NumberFormatException){
        0
    }
}

inline fun String.safeLong() : Long{
    return try {
        this.toLong()
    } catch (e: NumberFormatException){
        0L
    }
}

当我运行一个使用内部使用此数据类的类的Java应用程序时,我得到一个异常:java.lang.NoSuchMethodError:io.igx.iot.model.SensorData。(Ljava / lang /字符串; Ljava /郎/串; Ljava / util的/日期; DLjava /郎/串;)V

我是否遗漏了数据类中的内容?

更新

为了清楚起见,从不从java代码调用SensorData类,而是另一个名为EcobeeParser的kotlin类调用它:

sensors.add(SensorData(column.type, entry.key, date, read, report.id))

此类EcobeeParser在java代码中调用为:

EcoBeeParser parser = new EcoBeeParser(new FileInputStream(new File("")), 19);

那是什么失败了,但是在一个kotlin项目中这是有效的:

val parser = EcobeeParser(FileInputStream(File)), 19)

0 个答案:

没有答案