IntelliJ'de Maven için Java sürümü nasıl değiştirilir?


83

Hem Maven hem de IntelliJ IDEA'da yeniyim.

Java 8'de yazılmış bir Maven projem var. Ne zaman onu oluşturmaya çalışsam (Maven Projeleri penceresi -> Yaşam Döngüsü -> derleme -> Maven Build Çalıştır) bir dizi derleme hatası alıyorum:

[ERROR] path/to/file.java:[26,52] lambda expressions are not supported in -source 1.5
(use -source 8 or higher to enable lambda expressions)

-Source parametresinin değerini nerede değiştirmem gerekiyor? Bunu Ayarlar -> Derleyici -> Java Derleyicisine ek bir parametre olarak eklemeyi denedim, ancak aynı sonuçları aldım.

Projenin ve modülün dil seviyeleri 8.0'a ayarlanmıştır.

Maven 3.2.3 ve IntelliJ IDEA Community Edition 13.1.2 kullanıyorum.


pom dosyasında değiştirdin mi?
eis

Yaklaşımım onları doğrudan IntelliJ'de şu şekilde ayarlamaktı: http://stackoverflow.com/a/37648709/5154418
Yumi Koizumi

Yanıtlar:


118

Ya da daha kolay, bunu ponponun propertiesbölümüne ekle :

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

Bu, <build / configuration> etiketlerini kullanana kadar 2017.2.5'te benim için çalışmıyor.
Pawel Veselov

1
IntelliJ ayarlarından hiçbiri benim için bir şey yapmadı. Bu cevap, saatler süren aramalardan sonra onu düzelten tek şeydir. Teşekkürler!
Tim

12
İyi çalışıyor, ancak pom.xml dosyasını yeniden içe aktarmayı unutmayın, sağ tıklayın -> Maven ->
Reimport

Bu, start.spring.io tarafından oluşturulan pomun içine konulmalıdır ! Neden yapmadıklarını bilmiyorum. Oraya "<java.version> 1.8 </java.version>" koydukları şey işe yaramaz.
Kullanıcı007

1
Platform Ayarında gerekli SDK / JDK'ya zaten sahip olduğunuzdan emin olun.
gkephorus

34

Özet:

  • 'maven-compiler-eklentisi' HER ZAMAN çalışır! Size kullanmanızı önerdiğim şey bu.

Dil seviyesini değiştirmek için şunlardan yararlanın:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.4</source>
                <target>1.4</target>
            </configuration>
        </plugin>
    </plugins>
</build>

Özellikler her zaman Intellij'in dil seviyesini değiştirmez!

Aşağıdaki kodda 1.4 pom'da maven-compiler-plugin
(Intellij'in jdk'si 1.8'dir) kullanılarak yapılandırılmış ve projenin dil seviyesi buna göre 1.4 olarak değiştirilmiştir:

görüntü açıklamasını buraya girin

İki kez kontrol edildi! Bu bir örnektir. Çoğu zaman JDK'nın sürümünü 1.4'e düşürmeyeceksiniz!

Tabii ki özellikleri kullanırsanız, diyelim ki pom 1.8'i koydunuz, o zaman Intellij'de 1.8 JDK kullanırsanız (varsayılan dil seviyesi 1.8'dir veya varsayılan dil manuel olarak değiştirilmiştir), o zaman 1.8'de kodlama yapabileceksiniz. ANCAK mvn derlemesinde, özellikler GÖRÜNMEZ ve varsayılan olarak Maven 1.5'i kullanacaksınız ve derleme başarılı OLMAYACAK!


Btw ve bence bu karışıklığı yarattı, Eclipse maven.compiler.source ve maven.compiler.target'i destekliyor.
Rudy Vissers

Pom dosyasını güncelledim ancak wokr olması için bunu Proje Ayarlarında da değiştirmem gerekiyordu.
gloomy.penguin

@ gloomy.penguin: Maven Quickstart arketipinden yeni bir Fikir projesi oluşturdum. Sonra Project Settings ---> Modules'e baktım ve 5.0 - 'enum' anahtar kelimesi, generic, autoboxing vb. Okudum. Ardından maven-compiler-eklentisinden kaynağı (1.6) ve hedefi (1.6) ekledim ve tam olarak aynı ve arabirimlerde 6- @ Override okudum. Sanırım bir karışıklık var. VARSAYILAN SDK'YI DEĞİŞTİRMEK İSTEMİYORUZ. Bununla ilgili yapabileceğimiz hiçbir şey yok.
Rudy Vissers

@gloomy: penguin: JDK 1.5 varsayılan olarak yapılandırılmışsa ve pom'daki yapılandırmayı 1.6'ya soracak şekilde değiştirirseniz, bu jdk'leri Intellij'e eklemiş olsanız bile Idea varsayılan SDK'yı 1.6 veya 1.7 veya 1.8 olarak değiştirmez. Pom'daki yapılandırma, Idea'dan varsayılan sdk'yi kullanarak kaynak ve hedef sürümü değiştirmesini ister! Resimdeki örnekte 1.4 sorulmuştur ve varsayılan jdk 1.8'dir ve tabii ki sorun yoktur. Pom'da yapılandırdığınız sürümlerle uyumlu bir varsayılan jdk kurmanız gerekir.
Rudy Vissers

@ gloomy-penguin: Yani 1.8 tüm konfigürasyonları destekleyecek (ancak 9'u değil !!!). Umarım yardımcı olur. Tekrarlıyorum, sadece kontrol ettim ve işe yarıyor. Ve lütfen Proje Ayarları ---> Modüller'deki sonucu kontrol edin.
Rudy Vissers

7

Kaynağı pom.xml'de gösterildiği gibi değiştirin

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

6

Soruya verilecek herhangi bir yanıtın endişeyi ele aldığını sanmıyorum - " ... IntelliJ'de "

İşte adımlar: -

  • IntelliJ'de Tercihler'e gidin (veya Kısayol ⌘ +,)
  • Derleme, Yürütme, Dağıtım> Maven> İçe Aktarıcı - " İçe Aktarıcı için JDK " açılır menüsünü seçin ve ardından tercih ettiğiniz java sürümünü seçin, Uygula'yı tıklayın
  • Build, Execution, Deployment> Maven> Runner - " JRE " açılır menüsünü seçin ve ardından tercih ettiğiniz java sürümünü seçin, Uygula'yı tıklayın
  • Tamam'ı tıklayın

4

Aşağıdaki satırları köke (proje düzeyi) eklemek pom.xml yukarıdaki sorunu çözmek için beni çalıştı: (her iki seçenek 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>

ilk olarak şurada yayınlandı: IntelliJ IDEA 13, 1.7 olarak ayarlanmasına rağmen Java 1.5 kullanıyor


1

Bunu yapmanın iki yolu vardır:

İlk Ekleme Özellikleri

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

ikinci - Eklenti Ekle

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>

0

Dil seviyesini değiştirmeye zorlamak için pom.xml dosyanıza aşağıdaki kodu eklemelisiniz

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

şimdi intelliJ 2019.3 CE, içeri aktarmaya giderseniz bunu sizin için yapar ve ardından alt + girin, "bu işlevi kullanmak için dil düzeyini 8 olarak değiştir" seçeneğinin bulunduğu yere girin


0

ubuntu terminalini açın ve kök dizininize gidin ve şunu yazın:

export JAVA_HOME = <path to jdk>

örneğin, benim için iyi çalışıyor {aynısını IntelliJ terminalinde yap}.

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

ayar değeri türünü kontrol etmek için echo $JAVA_HOME

maven sürüm türünü kontrol etmek için: mvn -version

bu komutu yazarak tüm JDK yollarını bulabilir ve JDK sürümünü ayarlayabilirsiniz.

sudo update-alternatives --config java

aynı java -versionve sahip olduğunuzu da kontrol edin javac -version.

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.