2016-09-23 13 views
8

私は次のlibsを使用する既存のAndroidプロジェクトがあります。KotlinクラスNoClassDefFoundErrorがクラッシュ

  1. を自動入力値
  2. Dagger2
  3. RxJava
  4. Retrolambda

私はKotlinを追加しようとしていますプロジェクトをゆっくりとKotlinに移行できるようにサポートします。 ここに私がしたことがあります。

  1. 追加されたKotlin依存性。
  2. はKtをクラスに上のクラスのいずれかを変換し、元のセットに追加されましたkotlin src/main/kotlin/..package..

  3. に上に移動しました。私はクリーンビルドを行うと、アプリケーションをデプロイする場合 sourceSets {+ = 'のsrc /メイン/ kotlin' main.java.srcDirsは}

  4. 、私はNoClassDefFoundErrorが例外を取得します。しかし、私がもう一度デプロイすれば、うまく動作します。 提案がありますか?クラスに注釈がありませんので、kaptプラグインを適用しませんでした。

注:最新のkotlin 1.0.4を使用しています。また、インスタント実行が無効になっています。

+0

は、あなたはそれがより多くのトリアージが必要であり、潜在的にバグとして報告して何かのように思えるので、[Kotlinの問題追跡](http://kotl.in/issue)に報告することがあります。 –

+0

新しい.ktファイルで生成されたクラスを使用していますか?おそらくkotlinのコンパイル時に、このクラスは存在しません。 – lllyct

答えて

4

Files > Settingsにアクセスし、完全にオフにする​​、すべてのチェックボックスをオフにする必要があります。

プロジェクトをクリーンにして再構築します。設定を確認し、最新のを使用していない場合のGradleとAndroidメーカーを更新protipを使用して - あなたはインスタントが無効になっていることを言ったように:

そして、それは

編集]を動作するはずです。

このissueによれば、Gradleプラグインのバージョンを2.10から2.14.1に変更すると役立ちます。

Protip: 使用の組み合わせCtrl + Shiftキー+ Aが

  • Configure Kotlin in Project

  • Configure Kotlin Updates

  • Convert Java File to Kotlin

のようなコマンドを見つけます
+0

ええ、私はインスタント実行が完全に無効になっており、grale 2.14.1で構築ツールバージョン2.2.0でAS 2.2を実行しています。 – bond

+0

ビルドツールを24.0.3に変更 – piotrek1543

+0

@bondそれを解決しました。そうであれば、解決策 – piotrek1543

0

まず、kotlinでアンドロイドスタジオを設定する必要があります。これは、アンドロイドスタジオにkotlinプラグインを追加する必要があるため、依存関係を追加してJavaクラスをkotlinに変換する必要があります。kt

https://www.youtube.com/watch?v=DN2EDdycZ3c

0

サフィックスにKotlinクラスのJavaからそれらを呼び出します。

その他の場合は、@file:JvmName("Utils")をパッケージの前にKotlinクラスに追加する必要があります。この場合は、任意のカスタム名をUtilsとする必要があります。

more details can be found here

関連する問題