Podczas próby uruchomienia przykładowego CorDapp ( https://github.com/corda/cordapp-example ) za pośrednictwem IntelliJ pojawia się następujący błąd:
Nie można wstawić kodu bajtowego budowanego z celem JVM 1.8 w kodzie bajtowym budowanym z celem JVM 1.6
Jak mogę zmodyfikować ustawienia IntelliJ, aby cały kod bajtowy był zbudowany z tym samym celem JVM?
build.gradle
zależności {compile ("org.jetbrains.kotlin: kotlin-stdlib-jdk8")}Odpowiedzi:
app / build.gradle
GL
Użyj funkcji języka Java 8
źródło
kotlinOptions { jvmTarget = "1.8" }
powinno wystarczyć.Możesz rozwiązać ten problem w następujący sposób:
Build, Execution, Deployment
>Compiler
>Kotlin Compiler
aleOther Settings
>Kotlin compiler
jeśli Android Studio>3.4
Target JVM version
na1.8
Apply
źródło
Target platform
na JVM 1.8 w swoimKotlin
aspekcie podGeneral
zakładką.Kotlin Compiler
ustawienia zostały umieszczone wOther Settings
sekcji.powinieneś skonfigurować coś w następujący sposób w build.gradle
źródło
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions.jvmTarget = "1.8" }
kotlin-android
wtyczką?W moim przypadku zmiana docelowej wersji JVM w następujący sposób: Plik> Ustawienie> Kompilator Kotlin> Docelowa wersja JVM> 1.8 nie pomogła. Jednak rozwiązuje błąd czasu kompilacji. Ale nie powiodło się w czasie wykonywania.
Musiałem również dodać następujące w pliku build.gradle aplikacji, aby działało.
źródło
Gdy inne rozwiązania nie działały dla ciebie (zmiana wersji JVM w ustawieniach kompilatora i dodawanie
jvmTarget
do twojegobuild.gradle
), z powodu.iml
plików wymuszających ich konfigurację możesz zmienić platformę docelową z Ustawień projektu.File > Project Structure
Facets
podProject Settings
+
przyciskTarget Platform
doJVM 1.8
(też lepiej sprawdzićUse project settings
opcję)źródło
<configuration version="3" platform="JVM 1.8" useProjectSettings="false">
siętrue
i zadziałało. Plik się jednak zmienia!W moim przypadku ten kod nie działał, dopóki nie przejdę
apply plugin: 'kotlin-android'
od dołu do góry.źródło
W Android Studio 4.3.2 dodawanie za pomocą poniższej procedury nie działa.
Powodem jest to, że Android Studio nie może dodać poniższego kodu w pliku Gradle na poziomie modułu. Dodaj go ręcznie.
Tylko dla dodatku wyszukaj docelową wersję JVM w wyszukiwaniu Android Studio. Zabierze Cię bezpośrednio do opcji.
źródło
obraz jest wart tysiąca słów
źródło
Luty 2020
Android 3.4+
Przejdź do Plik -> Ustawienia -> Kompilator Kotlin -> Docelowa wersja JVM> Ustaw na 1.8, a następnie upewnij się, że zrobisz Plik -> Synchronizuj projekt z plikami Gradle
Lub dodaj to do build.gradle (moduł: aplikacja) w bloku Androida :
źródło
Jak napisano w dokumentach using-maven ze strony internetowej Kotlin:
Musisz tylko umieścić
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
w sekcji właściwości pliku pom.xmlźródło
Jeśli masz wiele zestawów / modułów źródłowych, skonfigurowanie jvmTarget dla każdego z nich może być uciążliwe.
Możesz skonfigurować jvmTarget dla wszystkich jednocześnie:
Tego fragmentu kodu można używać na najwyższym poziomie pliku gradle.build
Po zmodyfikowaniu pliku ocen
Reimport All Gradle Imports
. Aby sprawdzić, czy zadziałało, otwórzProject Structure
i sprawdź, czy IntelliJ poprawnie przypisanyJVM 1.8
do wszystkich modułów Kotlin. To powinno wyglądać tak:Chciałbym nie zaleca się zmieniania platformę bezpośrednio w IntelliJ, ponieważ ktoś inny klonowania swój projekt po raz pierwszy prawdopodobnie w obliczu tego samego problemu. Prawidłowe skonfigurowanie go w stopniach ma tę zaletę, że IntelliJ zachowuje się dla nich poprawnie od samego początku.
źródło
W moim przypadku rozwiązałem ten problem, wykonując te dwa kroki
źródło
Dla mnie powodem była taka konfiguracja w mojej klasie kompilacji, która była w niektórych modułach, aw niektórych nie
źródło
W przypadku Gradle z językiem Kotlin (
*.gradle.kts
pliki) dodaj:źródło
this
naKotlinJvmOptions
. Czythis
odbiornik nie jest już wkotlinOptions
blokuKotlinJvmOptions
? Wciąż nie działa dla mnie bez obsadyw większości przypadków to wystarczy:
jeśli zadeklarowałeś niestandardowe zadania Gradle, takie jak
integrationTest
na przykład, dodaj również konfigurację dlacompile<YourTaskName>Kotlin
:źródło
Ustawienie
sourceCompatibility = JavaVersion.VERSION_1_8
włącza usuwanie danych, ale obecnie nie jest w stanie usunąć wszystkich funkcji Java 8 używanych przez kompilator Kotlin.Poprawka - ustawienie
kotlinOptions.jvmTarget to JavaVersion.VERSION_1_8
w module aplikacji Gradle rozwiązałoby problem.źródło
Wszystkie odpowiedzi tutaj używają stopniowania, ale jeśli ktoś taki jak ja trafi tutaj i potrzebuje odpowiedzi dla maven:
Zmiana z archetypu jetbrains dla kotlin-jvm polega na
<configuration></configuration>
określeniu jvmTarget. W moim przypadku 11źródło
Nic nie działało dla mnie, dopóki nie zaktualizowałem mojej zależności od wtyczek Kotlin.
Spróbuj tego:
1. Unieważnij cahce i uruchom ponownie.
2. Synchronizuj projekt (przynajmniej spróbuj)
3. Przejdź do Plik -> Struktura projektu -> Sugestie
4. Jeśli jest aktualizacja dotycząca Kotlin, zaktualizuj ją.
Mam nadzieję, że to komuś pomoże.
źródło
Jeśli używasz Visual Studio Code ** z rozszerzeniem Kotlin, przejdź do zarządzania wtyczkami Crtl + Shift + x, wpisz kotlin i kliknij Zarządzaj (mały sprzęt) >> Konfiguruj ustawienia rozszerzeń
na Kotlin >> Kompilator >> Jvm: Target - wpisz wersję Java. W mojej sytuacji właśnie wpisałem 1.8
A następnie uruchom ponownie :-)
** vscode lub po prostu „kod” dla systemu Linux
źródło
W moim przypadku Plik> Ustawienia> Kompilator Kotlin> Docelowa wersja JVM> 1.8
źródło
Używam Kotlin i Gradle do normalnego programowania JVM (nie dla Androida) i to działało dla mnie w
build.gradle
:źródło
Jeśli używasz Eclipse, zakładając, że pobrałeś wtyczkę Kotlin:
Kliknij projekt prawym przyciskiem myszy -> Właściwości -> Kompilator Kotlin -> Włącz ustawienia specyficzne dla projektu -> Wersja docelowa JVM „1.8”
źródło
W przypadku najnowszych wersji Androida Studio zmiana tylko wersji docelowej maszyny wirtualnej Kotlin nie działała.
Plik Str Struktura projektu ➞ Moduły (
app
): ustaw „Zgodność źródła” i „Zgodność docelowa” na „1.8 (Java 8)”. Naciśnij „OK” i zsynchronizuj projekt z Gradle.źródło
jeśli jesteś w projekcie Android
w build.gradle aplikacji na Androida {}
źródło
Za pomocą DSL Kotlin Gradle rozwiązało to problem. Dodałem to do build.gradle.kts. Jest to uzupełnienie odpowiedzi Joela
źródło
Kolejna wskazówka dla użytkowników Eclipse. Po dwukrotnym sprawdzeniu ustawień docelowych jvm wskazanych przez innych użytkowników nadal miałem ten sam problem, a przyczyną tego był brak biblioteki wykonawczej Kotlin. Na przykład podczas tworzenia projektu z inicjalizatorem wiosennym nie jest on dodawany automatycznie. Aby go dodać:
right click on your project -> Build path -> Add libraries... -> User Library
i po prostu dodajorg.jetbrains.kotlin.core.KOTLIN_CONTAINER
Pamiętaj, aby później odświeżyć swój projekt stopniowy (
right click -> Gradle -> Refresh gradle project
)źródło
Jeśli masz do czynienia z tym komunikatem w projekcie Spring Boot / Kotlin, po prostu ustaw właściwość „kotlin.compiler.jvmTarget” na „1.8” w pliku pom.xml.
źródło
W moim przypadku jvmTarget został już ustawiony w
build.gradle
pliku jak poniżej.Ale mój problem wciąż tam był. Ostatecznie rozwiązuje się to po zmianie docelowej wersji JVM z 1.6 na 1.8 w Preferencjach> Inne ustawienia> Kompilator Kotlin> Docelowa wersja JVM. patrz załączone zdjęcie,
źródło