IntelliJを介してサンプルCorDapp(https://github.com/corda/cordapp-example)を実行しようとすると、次のエラーが表示されます。
JVMターゲット1.8でビルドされたバイトコードを、JVMターゲット1.6でビルドされているバイトコードにインライン化することはできません。
IntelliJ設定を変更して、すべてのバイトコードが同じJVMターゲットでビルドされるようにするにはどうすればよいですか?
IntelliJを介してサンプルCorDapp(https://github.com/corda/cordapp-example)を実行しようとすると、次のエラーが表示されます。
JVMターゲット1.8でビルドされたバイトコードを、JVMターゲット1.6でビルドされているバイトコードにインライン化することはできません。
IntelliJ設定を変更して、すべてのバイトコードが同じJVMターゲットでビルドされるようにするにはどうすればよいですか?
回答:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
GL
kotlinOptions { jvmTarget = "1.8" }
で十分です。
この問題は次のように修正できます。
Build, Execution, Deployment
> Compiler
> Kotlin Compiler
しかし Other Settings
> Kotlin compiler
Androidのメーカーの場合>3.4
Target JVM version
へ1.8
Apply
Target platform
にJVM 1.8あなたにKotlin
下ファセットGeneral
タブ。
Kotlin Compiler
設定は実際にはOther Settings
セクションに配置されました。
build.gradleで次のように構成する必要があります
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
kotlin-android
プラグインで動作させる方法はありますか?
他のソリューションが機能しない場合(コンパイラ設定でJVMバージョンを変更してに追加jvmTarget
するbuild.gradle
)、.iml
ファイルが構成を強制しようとしているため、プロジェクト設定からターゲットプラットフォームを変更できます。
File > Project Structure
Facets
下に行くProject Settings
+
ボタンをクリックしますTarget Platform
しますJVM 1.8
(Use project settings
オプションを確認することをお勧めします)<configuration version="3" platform="JVM 1.8" useProjectSettings="false">
しtrue
、それが働いた。ただし、ファイルは元に戻り続けます!
私の場合、このコードapply plugin: 'kotlin-android'
は下から上に移動するまで機能しませんでした。
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
Android Studio 4.3.2では、以下の手順による追加は機能しません。
その理由は、Android StudioがモジュールレベルのGradleファイルに以下のコードを追加できないためです。手動で追加してください。
kotlinOptions {
jvmTarget = "1.8"
}
アドオンについては、Android Studio検索でターゲットJVMバージョンを検索します。オプションに直接移動します。
2020年2月
android 3.4以降
[ファイル]-> [設定]-> [Kotlinコンパイラ]-> [ターゲットJVMバージョン]> [1.8]に設定し、[ファイル]-> [Gradleファイルとプロジェクトを同期]を選択する
か、build.gradle(module:app)に追加します。Androidのブロック:
kotlinOptions {
jvmTarget = "1.8"
}
それがで書かれている通り使用して、Mavenの Kotlinのウェブサイトからのドキュメント:
あなた<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
はあなたのpom.xmlのプロパティセクションに入れなければなりません
多くのソースセット/モジュールがある場合、それぞれに対して個別にjvmTargetを設定するのは面倒な場合があります。
次のように、それらすべてのjvmTargetを一度に設定できます。
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
このスニペットは、gradle.buildファイルの最上位で使用できます
Gradleファイルを変更した後Reimport All Gradle Imports
。機能したかどうかを確認するには、Project Structure
IntelliJを開いて、JVM 1.8
すべてのKotlinモジュールに正しく割り当てられていることを確認します。次のようになります。
IntelliJで直接プラットフォームを変更することはお勧めしません。プロジェクトを初めて複製する人はだれでも同じ問題に直面する可能性が高いからです。Gradleで正しく設定すると、IntelliJが最初から正しく動作するという利点があります。
私の場合、私はこれらの2つのステップに従ってこれを解決しました
1. Go to android studio preferences -> other settings -> kotlin compiler -> set Target JVM version = 1.8
if it doesn't work then go to the second option.
2. In your module-level build.gradle file add
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
私にとっての理由は、ビルドグラドルのこの構成が一部のモジュールにあり、一部にそれがなかったからです
android {
...
kotlinOptions {
val options = this as KotlinJvmOptions
options.jvmTarget = "1.8"
}
...
android {
Kotlin言語(*.gradle.kts
ファイル)を使用するGradleの場合は、次を追加します。
android {
[...]
kotlinOptions {
this as KotlinJvmOptions
jvmTarget = "1.8"
}
}
this
する必要があるのはなぜですかKotlinJvmOptions
。ブロックthis
内の受信機はkotlinOptions
すでにありKotlinJvmOptions
ませんか?それでも、キャストなしでは私には
ほとんどの場合、これで十分です:
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
integrationTest
たとえば、カスタムのGradleタスクを宣言している場合は、次の構成compile<YourTaskName>Kotlin
も追加します。
compileIntegrationTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
設定sourceCompatibility = JavaVersion.VERSION_1_8
により、desugaringが有効になりますが、現時点では、Kotlinコンパイラが使用するすべてのJava 8機能をdesugarすることはできません。
修正- kotlinOptions.jvmTarget to JavaVersion.VERSION_1_8
アプリモジュールGradleで設定すると、問題が修正されます。
Java 8言語機能を使用する:https : //developer.android.com/studio/write/java8-support
android {
...
// Configure only for each module that uses Java 8
// language features (either in its source code or
// through dependencies).
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// For Kotlin projects
kotlinOptions {
jvmTarget = "1.8"
}
}
ここでのすべての回答はgradleを使用していますが、私のような誰かがここで終わり、mavenの回答が必要な場合:
<build>
<sourceDirectory>src/main/kotlin</sourceDirectory>
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmTarget>11</jvmTarget>
</configuration>
</plugin>
</plugins>
</build>
kotlin-jvmのjetbrainsアーキタイプからの変更は、jvmTargetを<configuration></configuration>
指定することです。私の場合11
Androidプロジェクトの場合
Androidのアプリのbuild.gradle {}
android{
//other configs...
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
}
Kotlin Gradle DSLを使用して、これで問題が解決しました。これをbuild.gradle.ktsに追加しました。これはジョエルの答えに追加されます
val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()
Eclipseユーザーのためのもう1つのヒント。他のユーザーから指摘されたjvmターゲット設定を再確認した後も、同じ問題が発生しました。これは、Kotlinランタイムライブラリがないために発生しました。たとえば、Spring Initializrを使用してプロジェクトを作成する場合、プロジェクトは自動的に追加されません。それを追加するには:right click on your project -> Build path -> Add libraries... -> User Library
、そして単に追加org.jetbrains.kotlin.core.KOTLIN_CONTAINER
その後、gradleプロジェクトを更新してください(right click -> Gradle -> Refresh gradle project
)
私の場合、jvmTargetはすでにbuild.gradle
次のようにファイルに設定されています。
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
kotlinOptions {
jvmTarget = "1.8"
}
}
しかし、私の問題はまだそこにありました。最後に、Preferences> Other Settings> Kotlin Compiler> Target JVM versionでTarget JVMバージョンを1.6から1.8に変更すると解決されます。添付画像を参照してください、
build.gradle
の依存関係{コンパイル(「org.jetbrains.kotlin:kotlin-STDLIB-jdk8」)}