IDEA: javac: kaynak sürümü 1.7, hedef sürümü 1.7 gerektirir


474

IntelliJ IDEA kullanarak bir JUnit testi çalıştırırken,

resim açıklamasını buraya girin

Bunu nasıl düzeltebilirim?

  • SDK 1.7'yi kullanma
  • Modül dil seviyesi 1.7

Maven inşa iyi çalışıyor. (Bu yüzden bu IDEA yapılandırma sorununa inanıyorum)

Yanıtlar:


689

Büyük olasılıkla Maven'den içe aktarılan yanlış derleyici seçenekleriniz var:

derleyici seçenekleri

Ayrıca ekran görüntüsünde belirtilen proje ve modül bayt kodu ( hedef ) sürüm ayarlarını kontrol edin .

Kaynak dil seviyesinin yapılandırıldığı diğer yerler :

  • Proje Yapısı | proje

proje

  • Proje Yapısı | Modüller (her modülü kontrol edin) | Kaynaklar

kaynaklar

Maven varsayılan dil seviyesi olan 1.5 (5.0), yukarıdaki ekran üzerinde Modül dil seviyesi olarak bu sürümü görür.

Bu, içindeki maven-derleyici-eklenti yapılandırması kullanılarak değiştirilebilir 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>

veya

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

Maven Projeleri araç penceresinde Maven projesini yeniden içe aktardıktan sonra IntelliJ IDEA bu ​​ayara saygı gösterecektir :

Yeniden İçeri Aktar


2
Doğru. Bu ayar bir projedeki tüm modüller için ortak mıdır yoksa belirli bir modüle özgü mü?
James Raitsev

1
Bu ayar proje başına yapılır, tüm modülleri etkiler.
CrazyCoder

8
Bunu düzelttikten ve uyguladıktan sonra bazı yanlış değerlere (maven değişiklikleri veya bir şey yoluyla) geri dönmesinin bir nedeni var mı?
Patrick

5
@Patrick, pom.xmljava derleyici eklenti yapılandırmanız pom.xml dosyasında (otomatik yeniden içe aktarma etkinleştirildiyse) bir sonraki değişiklikinizde veya projeyi manuel olarak yeniden içe aktardığınızda bu ayarı geçersiz kılacak Java sürümünü belirtebilir.
CrazyCoder

1
@CrazyCoder Bunu daha önce bir kez değiştirdikten sonra pom.xml'imi değiştirdim (pom'a gelen diğer değişiklikleri bekliyordum), bu oldukça makul bir açıklama gibi geliyor. Teşekkürler
Patrick

358

IntelliJ 15, 2016 ve 2017

Aşağıda IntelliJ 13 ve 14 için tartışılana benzer, ancak Ayarlar / Tercihler panelinde fazladan bir düzey vardır: Ayarlar > Derleme, Yürütme, Dağıtım > Derleyici > Java Derleyici .

resim açıklamasını buraya girin

IntelliJ 13 ve 14

IntelliJ 13 ve 14'te, modülünüzde farklı bir bayt kodu sürümü hedeflemediğinizden emin olmak için Ayarlar> Derleyici> Java Derleyici Kullanıcı Arayüzüne bakın.

resim açıklamasını buraya girin


3
Modüllerimi silmek ve otomatik olarak çözmesine izin vermek zorunda kaldım (jdk varsayılanı için boş bırakın)
Akin Okegbile

3
En son Fikir14.1
Tushar

Peki buradaki çözüm nedir?
AlikElzin-kilaka

@ AlikElzin-kilaka, hedef seviyesini ihtiyacınız olana ayarlayın.
Drew Noakes

Birisi neden modül ayarlarına değil, genel tercihler yapılandırma ekranına belirli modül ayarlarını koyduklarını açıklayabilir mi?
MK.

61

In IntelliJ IDEA 14.1 "Hedef baytkodu versiyonu" farklı bir yerde olduğunu.

Aşağıdaki değişiklik benim için çalıştı:

Dosya> Ayarlar ...> Derleme, Yürütme, Dağıtım> Derleyici> Java Derleyici : Hedef bayt kodu sürümünü 1.5'den 1.8'e değiştir

resim açıklamasını buraya girin

resim açıklamasını buraya girin


ya da jdk'den belirlendiğinde boş bırakmak daha iyidir!
Dragonborn

Maven'in neden farklı bir konfigürasyonu var?
AlikElzin-kilaka

42

Yapı yapılandırmanıza baktınız mı, maven 3 ve JDK 7 kullanıyorsanız böyle olmalı

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

22

Buna girdim ve düzeltme Proje Ayarları> Modüller'e gitmekti> belirli modül> Bağımlılıklar sekmesine tıklayın. Modül SDK'nın hala 1.6 olarak ayarlandığını fark ettim, 1.7 olarak değiştirdim ve işe yaradı.


Bunu denedim ... Bireysel modülleri silmek ve otomatik çözümlemeye bırakmak zorunda kaldım.
Akın Okegbile

14

Durumumda gerekli seçenekleri ('hedef bayt kodu sürümü') buldum > derleyici> benim durumumda java derleyici (intelij idea 12.1.3)


10

Projenin derleyici ayar dosyasını aşağıdaki yolda değiştirin ve 'hedef'i 1.7 olarak değiştirin:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>

Teşekkürler bu benim için çalıştı! Projeye sağ tıklayarak "Make Module '[uygulama adınız]'"
yazmayı unutmayın

5

Alanı boş olarak ayarlayarak çözdüm:

Ayarlar> Derleyici> Java Derleyici> Proje bayt kodu sürümü

IntelliJ bundan sonra JDK varsayılan sürümünü kullanır.


4

Bir andan diğerine bu hatayı net bir neden olmadan aldım. Derleyici / modül vb. Her türlü ayarı değiştirdim. Ama sonunda Maven projesini yeniden içe aktararak IntelliJ projesini yeniden oluşturdum ve sorun çözüldü. Bence bu bir hata.

IntelliJ 12 129.961


IntelliJ 14.1.2 için de aynı şey geçerli. Projeyi yeniden ithal etti ve düzeltildi.
srikanth

4

IntelliJ IDEA 14'ten v14.1'e küçük bir yükseltmeden sonra bunu vurdum. Benim için üst / üst pom düzenlemesini değiştirmek yardımcı oldu ve sonra Maven'i yeniden içe aktardı (otomatik değilse).

Ancak modül (ler) / toplanmış / ana modül ve Maven -> Reimport'a sağ tıklamak yeterli olabilir.


bu benim için çalıştı! üst düzey
modülüm

2

Feryat yöntemini çözdüm

Dosya >> Proje Yapısı >> Proje >> Proje Dil Seviyesi -> uygun sürümü ayarlayın (ör: 1.5)


1

check .idea / misc.xml bazen languageLevel = "JDK_1_X" özelliğini manuel olarak değiştirmeniz gerekir


1

Bir Gradle projesiyse, build.gradle dosyanızda aşağıdaki ayarları arayın:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Tüm alt nesneler için kök build.gradle dosyanıza şunu koyabilirsiniz:

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

Fikir> Ayarlar'da dil düzeylerini manuel olarak ayarlayabilmenize rağmen, bir Gradle projesiyse, Idea modül .iml dosyalarını Gradle ayarlarından otomatik olarak senkronize eder (Idea 15+ ile test edilir). Böylece sınıf yenilendiğinde tüm manuel değişiklikleriniz geçersiz kılınır.

Gradle belgelerine dayanarak, bunlar ayarlanmamışsa, geçerli JVM yapılandırması kullanılır.


1

Bu hatayla karşılaşmanın başka bir yolunu buldum. Dizin yapınızı yeniden düzenlediyseniz ve pomlarınızdan biri artık javac'ı yapılandırmayan eski ebeveyne işaret ediyorsa (bu yapılandırma orta seviyeye taşındığı için) alabilirsiniz. Bu durumda, üst seviye varsayılan olarak 1.5'tir ve hatalı çalışan alt seviye pom onu ​​devralır.

Bu hatayı gördüğünüzde kontrol etmeniz gereken başka bir şey de pom yapınızın dizin yapınızla düzgün eşleşmesidir.


1

Maven derlemesi iyi çalışıyorsa, Maven ve IntelliJ IDEA projelerinin yapısını senkronize etmeyi deneyin.

In Maven aracı penceresinde , yenile düğmesini tıklayınyenile . Bu düğmeye basıldığında IntelliJ IDEA, Maven aracı penceresinde proje yapısını ayrıştırır.

Maven senkronizasyonu özelliği bazen bozulabileceğinden, EAP derlemesi kullanıyorsanız bunun işe yaramayabileceğini unutmayın.


0

Doğru bağımlılığın seçildiğinden emin olun. Dosya> Proje Yapısı

Projenizi seçin ve Bağımlılıklar sekmesine gidin. Açılır menüden doğru bağımlılığı seçin veya yeni oluşturun.


0

Önceki tüm çözümler sizin için işe yaramadıysa (bu benim durumumdu), intellij yapılandırma dosyalarını silebilirsiniz:

  • 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
  • vb.

Intellij daha sonra yenilerini üretecek. Ancak, dikkatli olun, bu aynı zamanda projet üzerinde yapılan tüm intellij konfigürasyonunu da silecektir (yani: hata ayıklama modunun konfigürasyonu, ...)


0

Yapılandırma yapılandırmasında Java derleyici sürümünü değiştirmeniz gerekir.

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.