IntelliJ IDEA 13 menggunakan Java 1.5 meskipun telah diatur ke 1.7

147

Meskipun menentukan JDK 1.7 di semua pengaturan proyek (termasuk di File -> Project Structure -> Project :: Project SDK), kesalahan berikut dihasilkan oleh IntelliJ 13ketika mencoba mengkompilasi beberapa kode Java 7 sederhana yang tidak menggunakan operator berlian:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

Apakah ada tempat lain di konfigurasi tempat -source 7opsi yang diharapkan harus diaktifkan?

PNS
sumber
8
Mencoba Anda: File -> Project Structure -> Project :: Project language levelubah ke Diamonds, ARM, multi-catch etc?
Adam Shakhabov
39
Iya. Ternyata, ada opsi lain di bawah File -> Struktur Proyek -> Modul :: Sumber (di sebelah Paths and Dependencies) dan yang memiliki opsi "Level bahasa" yang juga perlu diatur dengan benar. Terima kasih semuanya atas komentar dan jawabannya! :-)
PNS
33
Ada 3 tempat yang perlu diperbarui. (1) File -> Pengaturan (Ctrl + alt + s untuk pintasan) lalu "Build, Execution, Deployment"> Compiler> Java Compiler dan ubah "Target bytecode versi" ke versi Java yang Anda inginkan. (2 dan 3) Tempat lain berada di bawah File> Struktur Proyek (Ctrl + Alt + Shift + S)> "Pengaturan Proyek"> "Proyek" ubah Project SDK untuk menunjuk ke versi Java yang sesuai dan atur tingkat bahasa Proyek ke versi yang benar. Bantuan kode hanya mengubah tingkat bahasa untuk Anda, sayangnya, ini mengganggu proyek baru.
8bitme
2
Bagaimana jika saya memiliki 200 modul dalam proyek saya yang harus saya habiskan sepanjang hari untuk menjepitnya?

Jawaban:

114

Jika tidak ada yang membantu (kasus saya), Anda dapat mengaturnya di pom.xml Anda, seperti ini:

<properties>
  <maven.compiler.source>1.7</maven.compiler.source>
  <maven.compiler.target>1.7</maven.compiler.target>
</properties>

Seperti yang dikatakan pria keren ini di sini: https://stackoverflow.com/a/25888116/1643465

Djordje Ivanovic
sumber
4
ide yang bagus, tapi jangan lakukan hard override Anda ke proyek bersama kecuali jika Anda ingin meledakkan semua pengaturan rekan tim Anda
quaintm
8
Ini memecahkan masalah bagi saya, terima kasih! Bagaimana bisa "meniup pengaturan rekan tim"? Jika target proyek adalah 1,7 maka itu adalah 1,7. Ini tidak seperti setiap rekan tim memiliki lingkungan target yang berbeda.
isapir
1
Bagus, proyek saya adalah pakar.
huuthang
1
Untuk proyek pakar baru, pengaturan ini dapat ditambahkan dalam proyek pakar default. Gunakan Preferensi | Editor | File dan Kode Templat | Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> Forum Dukungan InteliJ
pRmdk
Ini berhasil bagi saya. Tetapi hanya ketika saya memulai kembali IntelliJ, saya mencoba membangun kembali proyek sendirian dan itu tidak berhasil.
Metin Dagcilar
155

Silakan periksa tingkat bahasa proyek / modul Anda (Struktur Proyek | Proyek; Struktur Proyek | Modul | nama-modul | Sumber). Anda mungkin juga ingin melihat Pengaturan | Kompiler | Java Compiler | Versi bytecode per modul.

Atur juga ini:

File -> Struktur Proyek -> Modul :: Sumber (di sebelah Paths and Dependencies) dan yang memiliki opsi "Level bahasa" yang juga perlu diatur dengan benar.

Peter Gromov
sumber
2
Dan periksa apakah Additional command line parametersdalam Java Compilerpengaturan kosong.
NeplatnyUdaj
2
Catatan: Hal ketiga (File -> Struktur Proyek -> Modul :: Sumber) adalah apa yang dipecahkan untuk saya.
Peter
Tangkapan layar yang bermanfaat dari proses ini berakhir pada jawaban ini: stackoverflow.com/a/21747329/1146608
Patrick M
1
Jika menggunakan Maven, perlu mengubah pom: stackoverflow.com/questions/27037657/…
Benj
11
+1 untuk tingkat Bahasa. Ada seharusnya tidak menjadi tempat SO BANYAK untuk set dan re-set dan re-re-mengatur # $% ^ hal yang sama!
G. Ann - Tim SonarSource
52

[Untuk IntelliJ IDEA 2016.2]

Saya ingin memperluas sebagian dari jawaban Peter Gromov dengan tangkapan layar terbaru. Khususnya bagian khusus ini:

Anda mungkin juga ingin melihat Pengaturan | Kompiler | Java Compiler | Versi bytecode per modul.

Saya percaya bahwa (setidaknya di 2016.2): ​​memeriksa berbagai komitmen di gitreset ini menjadi 1,5.

Versi bytecode per modul

Birchlabs
sumber
5
Saya menyerah untuk mempertahankan ini pada angka yang benar (untuk beberapa alasan mereka berubah - saya berasumsi ketika saya melakukannya git checkout). Saya menemukan bahwa saya dapat menghapus entri dalam daftar ini dengan aman; modul kembali menggunakan "Project bytecode version".
Birchlabs
Angka-angka ini juga kembali ke 1,5 untuk saya secara tidak terduga. Hanya pengkodean yang sulit dari sumber kompilasi dan versi target dalam file pom.xml bekerja secara konsisten.
sheldonkreger
Perhatikan pengaturan "Versi bytecode versi" di dekat bagian atas tangkapan layar ini, dan juga yang disorot "Target bytecode version".
Basil Bourque
@Birchlabs Terima kasih, saya pikir ini adalah jawaban yang tepat.
chrips
1
Ini adalah satu-satunya solusi yang memperbaiki masalah bagi saya, IntelliJ IDEA 2019.1
João Rocha da Silva
19

Atau, Anda dapat menerapkan maven-compiler-plugin dengan versi java yang sesuai dengan menambahkan ini ke pom.xml Anda:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
OlgaMaciaszek
sumber
Ini berfungsi setelah keluar dari proyek menghapus folder .idea dan file .iml yang semuanya diciptakan kembali ketika membuka proyek lagi.
Andrew
1
Menekan tombol "segarkan Maven" dalam ide seharusnya bekerja.
OlgaMaciaszek
Pembaruan @OlgaMaciaszek diperlukan agar solusi tersebut berfungsi. Terima kasih!
bayar
14

Saya mencoba membuat perubahan pada Intellij IDEA seperti di bawah ini:

1.

File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8

2.

File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas

tetapi tidak ada yang berhasil, itu mengembalikan versi ke java 1.5 segera setelah saya menyimpannya.

Namun, menambahkan baris di bawah ini ke root (level proyek) pom.xml membantu saya untuk menyelesaikan masalah di atas: (kedua opsi bekerja untuk saya)

Pilihan 1:

<properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Pilihan 2:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
Amit Kaneria
sumber
11

File-> Struktur proyek-> Pengaturan Proyek-> Proyek-> tingkat Bahasa Proyek

File-> Struktur proyek-> Pengaturan Proyek-> Modul-> Tingkat bahasa

Ubah level menggunakan drop down

ketankk
sumber
4

Di baris perintah Anda (terminal Unix) Buka folder root proyek Anda, dan lakukan ini

find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +

Ini akan mengubah properti level bahasa di semua file .iml proyek Anda dari java 1.5 ke java 1.8.

Saideep Sambaraju
sumber
Belum yakin, tetapi Anda mungkin perlu juga mengganti versi JDK di compiler.xmlakar proyek (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets
compiler.xml mungkin khusus untuk proyek Anda. Perintah ini hanya menargetkan file * .iml yang hanya diperlukan oleh intellij. Anda mungkin harus menyesuaikan pengaturan bahasa di maven pom.xml Anda atau dalam case compiler.xml Anda terlepas dari IDE.
Saideep Sambaraju
1
@SaideepSambaraju compiler.xml hadir di setiap proyek ide yang dapat saya bangun. Dari apa yang saya lihat, file ini adalah model Pengaturan-> compiler (linux) Preferences-> Compiler (MacOS). Anda dapat menggunakannya untuk mengubah versi target dengan skrip seperti yang Oleksandr katakan atau dengan tangan tanpa UI.
Sergey Sargsyan
@SergeySargsyan - Saya baru saja memeriksanya, itu ada di folder .idea yang tidak dapat saya temukan dengan mencari. Terima kasih telah menunjukkannya.
Saideep Sambaraju
2

Pertama, Anda perlu mengubah "versi bytecode proyek" di bawah File > Settings,Compiler > Java Compiler

Kedua, lakukan pembangunan kembali penuh.

Elliott Frisch
sumber
2

Saya memiliki masalah yang sama tetapi dengan situasi yang berbeda. Saya dapat mengkompilasi tanpa masalah dengan maven di command line ( mvn clean install), tetapi di Intellij saya selalu mendapatkannya"java: diamond operator is not supported in -source 1.5" kesalahan kompilasi meskipun saya telah mengatur plugin-maven-compiler dengan java 1.8 di pom.xml.

Ternyata saya memiliki pengaturan repositori jarak jauh di pengaturan maven saya.xml yang bergantung pada proyek, tetapi Intellij menggunakan pakar sendiri yang tidak memiliki pengaturan yang sama dengan pakar lokal saya.

Jadi solusi saya adalah mengubah pengaturan pakar Intellij ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) untuk menggunakan pakar lokal.

jordom
sumber
2

Di IntelliJ Community Edition 2019.02, Mengubah pengaturan berikut berhasil bagi saya

  1. Perbarui File-> Struktur proyek-> Pengaturan Proyek-> Proyek-> Tingkat Bahasa Proyek ke Java 11 (perbarui ke versi java yang ingin Anda gunakan dalam proyek Anda) menggunakan drop down.

  2. Perbarui File-> Struktur proyek-> Pengaturan Proyek-> Modul-> Tingkat Bahasa

  3. Perbarui File-> Pengaturan-> Bangun, Eksekusi, Deployment -> Compiler -> Java Compiler-> Project ByteCode Version ke java 11.

  4. Perbarui versi Target untuk semua entri di bawah File-> Pengaturan-> Bangun, Eksekusi, Deployment -> Compiler -> Java Compiler-> Per module Byte Code Version.

Khyati Elhance
sumber
0

Saya memiliki properti berikut yang bekerja untuk saya di IntelliJ 2017

  <properties>
        <java.version>1.8</java.version>       
  </properties>
H.Rabiee
sumber
Ini hanya berfungsi jika Anda menggunakan proyek induk seperti spring boot.
wggn
0

Satu hal lagi yang dapat menyebabkan ini memiliki salah versionsatu<parent> proyek.

Dalam kasus saya itu menunjuk ke proyek yang tidak ada dan untuk beberapa alasan IntelliJ menurunkan versi dalam pengaturan ke 1,5 dan kemudian ketika saya memperbaikinya, masih menafsirkan versi kode target sebagai 5 (meskipun mengaturnya ke 11).

syntagma
sumber