IntelliJ IDEA 13, 1.7 olarak ayarlanmasına rağmen Java 1.5 kullanıyor


147

Tüm proje ayarlarında (içinde dahil File -> Project Structure -> Project :: Project SDK) JDK 1.7 belirtilmesine rağmen IntelliJ 13, elmas operatörünü kullanan bazı basit Java 7 kodunu derlemeye çalışırken aşağıdaki hata üretilir :

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

Yapılandırmada beklenen -source 7seçeneğin etkinleştirilmesi gereken başka bir yer var mı ?


9
Seni denedim: File -> Project Structure -> Project :: Project language leveldeğiştir Diamonds, ARM, multi-catch etc?
Adam Shakhabov

40
Evet. Görünüşe göre, Dosya -> Proje Yapısı -> Modüller :: Kaynaklar (Yollar ve Bağımlılıkların yanında) altında başka bir seçenek daha var ve bu da doğru ayarlanması gereken bir "Dil seviyesi" seçeneğine sahip. Yorumlar ve cevaplar için hepinize teşekkürler! :-)
PNS


33
Güncellenmesi gereken 3 yer var. (1) Dosya -> Ayarlar (kısayol için Ctrl + alt + s) ardından "Oluşturma, Yürütme, Dağıtım"> Derleyici> Java Derleyici ve "Hedef bayt kodu sürümü" nü istediğiniz Java sürümüne değiştirin. (2 ve 3) Diğer yer Dosya> Proje Yapısı (Ctrl + Alt + Shift + S)> "Proje Ayarları"> "Proje" altındadır, Proje SDK'sını uygun Java sürümüne işaret edecek şekilde değiştirin ve Proje dili düzeyini doğru versiyon. Kod yardımı, sizin için sadece dil seviyesini değiştirir, maalesef bunu yeni projeler için can sıkıcı hale getirir.
8bitme

2
Ya projemde 200 modülüm varsa, bütün gün onları tekrar gözden geçirmek zorunda mıyım?

Yanıtlar:


114

Bunların hiçbiri yardımcı olmazsa (benim durumumda), bunu pom.xml dosyanıza şu şekilde ayarlayabilirsiniz:

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

Bu havalı adamın burada bahsettiği gibi: https://stackoverflow.com/a/25888116/1643465


4
iyi fikir, ancak tüm takım arkadaşlarınızın ayarlarını havaya uçurmak istemiyorsanız, zorlu geçersiz kılmalarınızı paylaşılan bir projeye
işlemeyin

8
Bu benim için sorunu çözdü, teşekkürler! Nasıl "takım arkadaşlarının ayarlarını bozabilir"? Projenin hedefi 1.7 ise 1.7'dir. Her takım arkadaşının farklı bir hedef ortamı olduğu gibi değil.
isapir

1
Harika, benimki maven projesi.
huuthang

1
Yeni maven projeleri için bu ayar, varsayılan maven projelerine eklenebilir. Tercihleri Kullan | Editör | Dosya ve Kod Şablonları | Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> InteliJ Destek Forumu
pRmdk

Bu benim için çalıştı. Ancak yalnızca IntelliJ'i yeniden başlattığımda, projeyi tek başıma yeniden oluşturmayı denedim ve bu işe yaramadı.
Metin Dağcılar

156

Lütfen proje / modül dil seviyelerinizi kontrol edin (Proje Yapısı | Proje; Proje Yapısı | Modüller | modül-adı | Kaynaklar). Ayrıca Ayarlar | Derleyici | Java Derleyici | Modül başına bayt kodu sürümü.

Bunu da ayarlayın:

Dosya -> Proje Yapısı -> Modüller :: Kaynaklar (Yollar ve Bağımlılıkların yanında) ve ayrıca doğru şekilde ayarlanması gereken bir "Dil seviyesi" seçeneğine sahip.


2
Ve kontrol Additional command line parametersiçinde Java Compilerayarlardan boştur.
NeplatnyUdaj

2
Not: Üçüncü şey (Dosya -> Proje Yapısı -> Modüller :: Kaynaklar) benim için çözen şeydi.
Peter

Bu yanıtta bu sürecin faydalı ekran görüntüleri: stackoverflow.com/a/21747329/1146608
Patrick M

1
Maven kullanıyorsanız,
pom'u

11
Dil seviyesi için +1. Orada olmamalı seti ve yeniden seti ve yeniden yeniden ayarlamak aynı # $% ^ şeye KADAR yerler olabilir!
G. Ann - SonarSource Ekibi

52

[IntelliJ IDEA 2016.2 için]

Peter Gromov'un cevabının bir kısmını güncel bir ekran görüntüsü ile genişletmek istiyorum . Özellikle bu belirli kısım:

Ayrıca Ayarlar | Derleyici | Java Derleyici | Modül başına bayt kodu sürümü.

İnanıyorum ki (en azından 2016.2'de): farklı taahhütleri kontrol etmek gitbunları 1.5'e sıfırlar.

Modül başına bayt kodu sürümü


5
Bunları doğru sayılarda tutmaktan vazgeçtim (nedense değişiyorlar - yaptığımda varsayıyorum git checkout). Bu listedeki girişleri güvenle silebildiğimi fark ettim; modül "Proje bayt kodu sürümü" kullanmaya geri döner.
Birchlabs

Bu sayılar da benim için beklenmedik bir şekilde 1.5'e geri dönüyor. Yalnızca pom.xml dosyasındaki derleyici kaynak ve hedef sürümlerinin sabit kodlanması tutarlı bir şekilde çalışır.
sheldonkreger

Bu ekran görüntüsünün üst kısmına yakın "Proje bayt kodu sürümü" ayarına ve vurgulanan "Hedef bayt kodu sürümü" ne dikkat edin.
Basil Bourque

@Birchlabs Teşekkürler, bunun doğru cevap olduğunu düşünüyorum.
19-19

1
Benim için sorunu çözen tek çözüm buydu, IntelliJ IDEA 2019.1
João Rocha da Silva

19

Alternatif olarak, bunu pom.xml dosyanıza ekleyerek maven-compiler-eklentisini uygun java sürümüyle uygulayabilirsiniz:

<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>

Bu, proje yeniden açıldığında tümü yeniden oluşturulan .idea klasörünü ve .iml dosyasını silerek projeden çıktıktan sonra çalıştı.
Andrew

1
Fikirde "Maven'i yenile" düğmesine basmak işe yaramalı.
OlgaMaciaszek

Çözümün işe yaraması için @OlgaMaciaszek yenileme gerekiyordu. Teşekkürler!
payne

14

Intellij IDEA'da aşağıdaki gibi değişiklikler yapmayı denedim:

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

ama hiçbir şey işe yaramadı, sürümleri kaydeder kaydetmez java 1.5'e geri döndürdü.

Ancak, aşağıdaki satırları köke (proje düzeyi) eklemek pom.xml yukarıdaki sorunu çözmek için beni çalıştı: (her ikisi de benim için çalıştı)

Seçenek 1:

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

Seçenek 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>

11

Dosya-> Proje yapısı-> Proje Ayarları-> Proje-> Proje Dil seviyesi

Dosya-> Proje yapısı-> Proje Ayarları-> Modüller-> Dil seviyesi

Açılır menüyü kullanarak seviyeyi değiştirin


4

Komut satırınızda (Unix terminali) Proje kök klasörünüze gidin ve bunu yapın

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

Bu, tüm proje .iml dosyalarınızdaki dil seviyesi özelliğini java 1.5'ten java 1.8'e değiştirecektir.


Henüz emin değilim, ancak compiler.xmlprojenin kökünde JDK sürümünü de değiştirmeniz gerekebilir (IntelliJ 2017.2):sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets

compiler.xml, projenize özel olabilir. Bu komut yalnızca intellij tarafından ihtiyaç duyulan * .iml dosyalarını hedefler. IDE'den bağımsız olarak maven pom.xml veya sizin durumunuzda compiler.xml'de dil ayarlarını yapmanız gerekebilir.
Saideep Sambaraju

1
@SaideepSambaraju compiler.xml, gördüğüm herhangi bir oluşturulabilir fikir projesinde mevcut. Gördüğüm kadarıyla, bu dosya Ayarlar-> derleyici (linux) Tercihler-> Derleyici'nin (MacOS) modelidir. Hedef sürümü Oleksandr'ın dediği gibi komut dosyasıyla veya UI olmadan elle değiştirmek için kullanabilirsiniz.
Sergey Sargsyan

@SergeySargsyan - Biraz önce kontrol ettim, arayarak bulamadığım .idea klasöründe. Gösterdiğiniz için teşekkürler.
Saideep Sambaraju

3

IntelliJ Community Edition 2019.02'de, aşağıdaki ayarları değiştirmek benim için çalıştı

  1. Açılır listeyi kullanarak Dosya-> Proje yapısı-> Proje Ayarları-> Proje-> Proje Dili seviyesini Java 11'e (projenizde kullanmak istediğiniz java sürümüne güncelleyin) güncelleyin.

  2. Dosya Güncelle-> Proje yapısı-> Proje Ayarları-> Modüller-> Dil seviyesi

  3. Dosya Güncelle-> Ayarlar-> Derleyici, Yürütme, Dağıtım -> Derleyici -> Java Derleyici-> Project ByteCode Sürümünü java 11'e güncelleyin.

  4. Dosya-> Ayarlar-> Oluştur, Yürütme, Dağıtım -> Derleyici -> Java Derleyici-> Modül başına Bayt Kodu Sürümü altındaki tüm girişler için Hedef sürümü güncelleyin.


2

Öncelikle, altında "proje bayt kodu sürümünü" değiştirmeniz gerekir File > Settings,Compiler > Java Compiler

İkincisi, tam bir yeniden inşa yapın.


2

Aynı problemim var ama durum farklı. Komut satırında ( mvn clean install) maven ile herhangi bir sorun olmadan derleyebilirim , ancak Intellij'de "java: diamond operator is not supported in -source 1.5"pom.xml'de java 1.8 ile maven-compiler-eklentisini ayarlamama rağmen her zaman derleme hatası alıyorum.

Projenin bağlı olduğu maven'in settings.xml dosyasında uzak depo ayarım olduğu ortaya çıktı, ancak Intellij yerel yöneticimle aynı ayara sahip olmayan kendi mavenini kullanıyor.

Benim çözümüm Intellij'in maven ayarını ( Settings -> Build, execution, Deployment -> Maven -> Maven home directory) yerel maven'i kullanacak şekilde değiştirmekti.


1

Buna neden olabilecek bir şey daha projenin yanlış versionolmasıdır <parent>.

Benim durumumda, mevcut olmayan bir projeye işaret ediyordu ve bir nedenden dolayı IntelliJ, ayarlarda sürümü 1.5'e düşürdü ve onu düzelttiğimde, hala hedef kod sürümünü 5 olarak yorumluyordu (11'e ayarlamasına rağmen).


1

Yeni projeler için ayarları değiştirerek bunu düzeltmeyi başardım:

  1. Dosya -> Yeni Projeler Ayarları -> Yeni Projeler için Ayarlar -> Java Derleyici -> Sürümü ayarlayın

  2. Dosya -> Yeni Projeler Ayarları -> Yeni Projeler için Yapı -> Proje -> Proje SDK'sını Ayarla + dil seviyesini ayarla

  3. Projeleri kaldır

  4. Projeleri içe aktarın


0

IntelliJ 2017'de aşağıdaki mülk benim için çalışıyordu

  <properties>
        <java.version>1.8</java.version>       
  </properties>

Bu, yalnızca bahar önyüklemesi gibi bir üst proje kullanıyorsanız çalışır.
wggn
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.