我在IBM Bluemix上部署了一个用kotlin编写的spring引导应用程序。 我使用java的自由。 但我不能正确运行我的应用程序,但在我的机器在本地工作得很好。 当我打电话给我的REST API时,返回错误或不工作。 这是错误的: 有一个意外的错误(type = Internal Server Error,status = 500)。 java.lang.NoClassDefFoundError:it.gate42.skip.DeviceInfo.DeviceInfo_Accessor_ewee6w(初始化失败) 我已经试图改变Java版本,但错误是一样的。 (我已经设置了OPEN_JDK和版本1.8。+) 这是返回我的云代工应用程序的通话记录: https : //gist.github.com/paranoiasystem/a28a2587c231f2b398c4650ba1c7016c 我已经张贴在要点上,因为这么长,这是不可能发布所有日志在这里。
我使用Kotlin中的Gson将对象转换为json字符串。 var json2可以返回正确的结果,但var json1返回null,为什么? import android.os.Bundle import android.support.v7.app.AppCompatActivity import bll.SettingManage import info.dodata.mirror.R import model.MSetting import com.google.gson.Gson import utility.PreferenceTool class UIMain : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.layout_main) data class WiFiDefA(val Name:String, val Status: String) var aWiFiDefA=WiFiDefA(“a”,”b”) var json1=Gson().toJson(aWiFiDefA) var aWiFiDefB=WiFiDefB(“c”,”d”) var json2=Gson().toJson(aWiFiDefB) } data class WiFiDefB(val Name:String, val Status: String) }
我试图find一种方法来设置每个测试前的variables。 就像Junit中的@Before方法一样。 通过kotlin-test的文档,我发现我可以使用interceptTestCase()接口。 但不幸的是,下面的代码会触发exception: kotlin.UninitializedPropertyAccessException: lateinit property text has not been initialized class KotlinTest: StringSpec() { lateinit var text:String init { “I hope variable is be initialized before each test” { text shouldEqual “ABC” } “I hope variable is be initialized before each test 2” { text shouldEqual “ABC” } } override fun interceptTestCase(context: TestCaseContext, […]
我需要发送XML到服务器,我想服务器发回我的JSON。 我正在使用Retrofit 2 + Kotlin Retrofit2方法(在方法接口中): @Headers(“Content-Type: application/xml; charset=urf-8”, “Accept: application/json”) @POST(Connectors.SECRET_LINK) fun sendCustomXml(@Body data: XmlHolder): Observable Retrofit2服务: private fun createService(serviceClass: Class): S { val retrofit = return } init { initLoggingInterceptor() val builder = Retrofit.Builder() .baseUrl(BuildConfig.API_URL) .addConverterFactory(GsonConverterFactory.create()) .addConverterFactory(SimpleXmlConverterFactory.create()) //here it is I thought .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) mService = builder.client(getHttpClient()).build().create(ApiMethods::class.java)) } XML对象我需要发送像XML(标签等): @Root(name = “root_element”) class XmlHolder […]
我目前正在学习Kotlin,并试图创建一个适用于所有数字types ( Byte , Long , Float等)的扩展(infix)方法。 它应该像Python的%运算符一样工作: 4 % 3 == 1 // only this is the same as Java’s % 4 % -3 == -2 -4 % 3 == 2 -4 % -3 == -1 …或者像Java的Math.floorMod ,但它也应该使用Double或Float : -4.3 % 3.2 == 2.1000000000000005 或者这些types的任何可能的组合 3 % 2.2 == 0.7999999999999998 3L % 2.2f == […]
我试图注入Dagger 2.11 Retrofit in Fragment,但是我不能注入, 1)问题是AndroidInjection.inject(this)需要DaggerFragment,我不能将BaseFragment更改为DaggerFragment对象,因为它会导致问题,而替换片段 2)我也有点混淆匕首的架构,因为我已经看过很多匕首2.11或以上的演示代码,他们正在为每个活动创建模块。 所以我需要为每个活动创建单独的模块和组件 open class BaseFragment : Fragment() class HomeFragment : BaseFragment() { @Inject lateinit var retrofit: Retrofit override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } override fun onAttach(context: Context?) { AndroidInjection.inject(activity) super.onAttach(context) } override fun onAttach(activity: Activity?) { AndroidInjection.inject(this) super.onAttach(activity) } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View […]
我想在Kotlin中使用一个when()expression式来从一个函数返回不同的值。 输入是一个String ,但它可以解析为一个Int ,所以我想返回解析的Int如果可能的话,或者一个String如果不是。 由于输入是一个String我不能使用is型检查expression式。 有没有什么惯用的方法来实现呢? 编辑:我的问题是如何的when()expression式应该看起来像,而不是关于返回types。
我有一个名为ItemClickSupport的类,它将一个ItemClick附加到一个RecyclerView: 这是init函数: init { mRecyclerView.setTag(R.id.item_click_support, this) mRecyclerView.addOnChildAttachStateChangeListener(mAttachListener) } 并有一个companion object将其添加到recyclerView: companion object { fun addTo(view: RecyclerView): ItemClickSupport { var support: ItemClickSupport? = view.getTag(R.id.item_click_support) as ItemClickSupport if (support == null) { support = ItemClickSupport(view) } return support } } 当我运行我的应用程序,并尝试将clickListener添加到recyclerView,我得到一个 引起:kotlin.TypeCastException:null无法转换为非空typescom.dancam.subscriptions.Support.ItemClickSupport at com.dancam.subscriptions.Support.ItemClickSupport $ Companion.addTo(ItemClickSupport.kt:80)at com.dancam .subscriptions.AddSubscription.AddSubscription.onCreate(AddSubscription.kt:79) 第一个错误指向addTo函数中的这一行: var support: ItemClickSupport? = view.getTag(R.id.item_click_support) as ItemClickSupport 第二个在我的main_activity这个: […]
在以下源代码 fun main(args: Array) { println(“Hello, world!”) val mutableIntList = mutableListOf(1, 2, 3) addInt(4, mutableIntList) // No compile-time error addAnotherInt(5, mutableIntList) // Compile-time error println(mutableIntList) } fun addInt(item:T, list:MutableList){ list.add(item) } fun addAnotherInt(item:T, list:MutableList){ list.add(item) } 函数addInt和addAnotherInt作为参数是一个逆MutableList的Number MutableList 。 但是在main函数中,一行通常编译,另一行不行。 我也检查了从这些函数生成的Java代码,他们似乎是相同的。 addInt和addAnotherInt函数有addInt addAnotherInt ?
目前,我正在开发一个多模块项目,当我导航到src-> package path,然后打开一个kotlin文件(* .kt)时,我已经开始面临一个问题,对于我的模块之一,我点击“从源文件滚动”,它显示该文件是从一个在m2回收jar中加载的。 我曾试图: 卸载并重新加载模块 使缓存无效并重新启动 完全删除m2文件夹并重新导入依赖关系 这些都没有工作到目前为止。 也要强调: 我面对的这个问题只是针对其中的一个模块 也只为kt文件,java文件和其他文件正在导航罚款。