IDEA: javac: rilis sumber 1.7 membutuhkan rilis target 1.7

474

Saat menjalankan tes JUnit, menggunakan IntelliJ IDEA, saya mengerti

masukkan deskripsi gambar di sini

Bagaimana saya bisa memperbaikinya?

  • Menggunakan SDK 1.7
  • Tingkat bahasa modul adalah 1.7

Membangun Maven bekerja dengan baik. (Itu sebabnya saya percaya ini dalam masalah konfigurasi IDEA)

James Raitsev
sumber

Jawaban:

689

Kemungkinan besar Anda memiliki opsi kompilator yang salah diimpor dari Maven di sini:

opsi penyusun

Juga periksa pengaturan versi proyek dan modul bytecode ( target ) yang diuraikan pada tangkapan layar.

Tempat lain di mana tingkat bahasa sumber dikonfigurasi:

  • Struktur Proyek | Proyek

proyek

  • Struktur Proyek | Modul (periksa setiap modul) | Sumber

sumber

Level bahasa default Maven adalah 1.5 (5.0), Anda akan melihat versi ini sebagai level bahasa Modul pada tangkapan layar di atas.

Ini dapat diubah menggunakan konfigurasi maven-compiler-plugin di dalam pom.xml:

<project>
  [...]
  <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>
  [...]
</project>

atau

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

IntelliJ IDEA akan menghormati pengaturan ini setelah Anda mengimpor kembali proyek Maven di jendela alat Maven Projects :

impor kembali

CrazyCoder
sumber
2
Benar. Apakah pengaturan ini umum untuk semua modul dalam suatu proyek, atau spesifik untuk modul yang diberikan?
James Raitsev
1
Pengaturan ini adalah per proyek, mempengaruhi semua modul.
CrazyCoder
8
Apakah ada alasan mengapa setelah memperbaiki ini dan menerapkannya akan mengembalikan kembali ke nilai yang salah (baik melalui perubahan pakar atau sesuatu)?
Patrick
5
@ Patrick, pom.xmlkonfigurasi plug-in java compiler Anda dapat menentukan versi Java yang akan menimpa pengaturan ini lain kali Anda membuat perubahan pada pom.xml (jika impor ulang otomatis diaktifkan) atau masukkan kembali proyek secara manual.
CrazyCoder
1
@CrazyCoder Saya mengubah pom.xml saya setelah mengubah ini jauh sebelumnya (menunggu perubahan masuk lainnya ke pom), jadi itu terdengar seperti penjelasan yang cukup masuk akal. Terima kasih
Patrick
358

IntelliJ 15, 2016 & 2017

Mirip dengan yang dibahas di bawah ini untuk IntelliJ 13 & 14, tetapi dengan level tambahan di panel Pengaturan / Preferensi: Pengaturan > Bangun, Eksekusi, Penerapan > Kompiler > Kompiler Java .

masukkan deskripsi gambar di sini

IntelliJ 13 & 14

Di IntelliJ 13 dan 14, periksa Pengaturan> Kompiler> UI Java Compiler untuk memastikan Anda tidak menargetkan versi bytecode yang berbeda dalam modul Anda.

masukkan deskripsi gambar di sini

Drew Noakes
sumber
3
Saya harus menghapus modul saya dan membiarkannya diselesaikan secara otomatis (biarkan kosong untuk jdk default)
Akin Okegbile
3
Berfungsi untuk Ide terbaru14.1
Tushar
Jadi apa masalahnya di sini?
AlikElzin-kilaka
@ AlikElzin-kilaka, atur level target ke apa pun yang Anda butuhkan.
Drew Noakes
Adakah yang bisa menjelaskan mengapa mereka meletakkan pengaturan modul spesifik di layar konfigurasi preferensi global, bukan di pengaturan modul ??
MK.
61

Dalam IntelliJ IDEA 14.1 "versi bytecode Target" berada di tempat yang berbeda.

Perubahan berikut ini berhasil untuk saya:

File> Pengaturan ...> Build, Execution, Deployment> Compiler> Java Compiler : ubah versi bytecode Target dari 1,5 menjadi 1,8

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

ROMANIA_engineer
sumber
atau lebih baik membiarkannya kosong, ketika itu dapat ditentukan dari jdk!
Dragonborn
Mengapa ada konfigurasi yang berbeda dari maven?
AlikElzin-kilaka
42

Pernahkah Anda melihat konfigurasi build Anda seharusnya seperti itu jika Anda menggunakan maven 3 dan JDK 7

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>
bengkak
sumber
22

Saya mengalami ini dan perbaikannya adalah pergi ke Pengaturan Proyek> Modul> klik pada modul tertentu> tab Ketergantungan. Saya perhatikan Modul SDK masih diatur pada 1,6, saya mengubahnya menjadi 1,7 dan berhasil.

Rob Barreca
sumber
Saya mencoba ini ... Saya akhirnya harus menghapus masing-masing modul dan membiarkannya untuk menyelesaikan secara otomatis.
Akin Okegbile
14

Saya telah menemukan opsi yang diperlukan ('versi bytecode target') di pengaturan> kompiler> kompiler java dalam kasus saya (intelij idea 12.1.3)

eger
sumber
10

Ubah file pengaturan kompiler proyek di jalur berikut dan ubah 'target' menjadi 1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>
Joe Cheng
sumber
Terima kasih, ini berhasil untuk saya! Jangan lupa untuk melakukan "Make Module '[nama aplikasi Anda]'" dengan mengklik kanan pada proyek
Shehaaz
5

Saya mengatasinya dengan mengosongkan bidang:

Pengaturan> Kompiler> Kompiler Java> Versi bytecode proyek

Than IntelliJ menggunakan versi standar JDK.

Robert Moszczynski
sumber
4

Dari satu momen ke momen lainnya saya juga mendapatkan kesalahan ini tanpa alasan yang jelas. Saya mengubah semua jenis pengaturan pada kompiler / modul dll. Tetapi pada akhirnya saya baru saja menciptakan kembali proyek IntelliJ dengan mengimpor kembali proyek Maven dan masalah ini terpecahkan. Saya pikir ini adalah bug.

IntelliJ 12 129.961

pveentjer
sumber
Sama di sini untuk IntelliJ 14.1.2. Mengimport ulang proyek dan diperbaiki.
srikanth
4

Saya telah mencapai ini setelah hanya upgrade kecil dari IntelliJ IDEA 14 ke v14.1. Bagi saya mengubah edit top / parent pom membantu dan kemudian mengklik impor ulang Maven (jika tidak otomatis).

Tapi itu mungkin cukup untuk Klik Kanan pada modul / agregat / modul induk dan Maven -> Reimport.

OMax
sumber
ini berhasil untuk saya! saya melakukannya untuk modul tingkat atas dan modul anak saya
abelnation
2

Saya menyelesaikan metode di bawah ini

File >> Struktur Proyek >> Proyek >> Tingkat Bahasa Proyek -> atur versi yang tepat (mis: 1.5)

mati
sumber
1

periksa .idea / misc.xml terkadang Anda perlu mengubah atribut languageLevel = "JDK_1_X" secara manual

kai
sumber
1

Jika itu adalah proyek Gradle, dalam file build.gradle Anda, cari pengaturan berikut:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Untuk semua sub-proyek, di file root build.gradle Anda, Anda dapat meletakkan:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Meskipun Anda dapat secara manual mengatur level bahasa di Ide> Pengaturan, jika ini adalah proyek Gradle, Ide secara otomatis menyinkronkan file .iml modul dari pengaturan Gradle (diuji dengan Ide 15+). Jadi semua perubahan manual Anda ditimpa ketika gradle di-refresh.

Berdasarkan dokumentasi Gradle , jika ini tidak disetel, maka konfigurasi JVM saat ini digunakan.

Cagatay Kalan
sumber
1

Saya menemukan cara lain untuk mengalami kesalahan ini. Anda bisa mendapatkan ini jika Anda telah mengatur ulang struktur direktori Anda, dan salah satu pom Anda menunjuk ke orangtua lama yang tidak lagi mengkonfigurasi javac (karena konfigurasi itu dipindahkan ke tingkat menengah). Jika ini terjadi, level atas default ke 1.5 dan pom level bawah yang salah mewarisi itu.

Jadi hal lain yang perlu diperiksa ketika Anda melihat kesalahan ini adalah bahwa struktur pom Anda cocok dengan struktur direktori Anda dengan benar.

Gus
sumber
1

Jika Maven build berfungsi dengan baik, cobalah menyinkronkan struktur proyek Maven dan IntelliJ IDEA.

Di jendela alat Maven , klik tombol segarkan menyegarkan. Saat menekan tombol ini, IntelliJ IDEA mem-parsing struktur proyek di jendela alat Maven.

Perhatikan bahwa ini mungkin tidak membantu jika Anda menggunakan EAP build, karena fitur sinkronisasi Maven kadang-kadang rusak.

naXa
sumber
0

Pastikan depensi yang tepat dipilih. File> Struktur Proyek

Pilih proyek Anda dan arahkan ke tab Dependensi. Pilih ketergantungan yang tepat dari dropdown atau buat yang baru.

Viraj Kulkarni
sumber
0

Jika semua solusi sebelumnya tidak berhasil untuk Anda (yang merupakan kasus saya), Anda dapat menghapus file konfigurasi intellij:

  • project_directory / .idea / compiler.xml
  • project_directory / .idea / encodings.xml
  • project_directory / .idea / misc.xml
  • project_directory / .idea / modules.xml
  • project_directory / .idea / vcs.xml
  • project_directory / .idea / workspace.xml
  • dll.

Intellij akan membuat yang baru nanti. Namun, HATI-HATI, ini juga akan menghapus semua konfigurasi intellij yang dibuat pada projet (yaitu: konfigurasi mode debug, ...)

Youness Marhrani
sumber
0

Anda perlu mengubah versi Java compiler di dalam build config.

masukkan deskripsi gambar di sini

Nirbhay Rana
sumber