Jak zmienić wersję Java dla Maven w IntelliJ?

83

Jestem nowy w Maven i IntelliJ IDEA.

Mam projekt Maven napisany w Javie 8. Za każdym razem, gdy próbuję go zbudować (okno Maven Projects -> Lifecycle -> compile -> Run Maven Build) pojawia się seria błędów kompilacji:

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

Gdzie mam zmienić wartość parametru -source? Próbowałem dodać to jako dodatkowy parametr w Ustawienia -> Kompilator -> Kompilator Java, ale otrzymałem te same wyniki.

Poziomy językowe projektu i modułu są ustawione na 8.0.

Używam Maven 3.2.3 i IntelliJ IDEA Community Edition 13.1.2.

tearvisus
źródło
czy zmieniłeś to w pliku pom?
eis
Moje podejście polegało na ustawieniu ich bezpośrednio w IntelliJ w ten sposób: http://stackoverflow.com/a/37648709/5154418
Yumi Koizumi

Odpowiedzi:

118

Lub łatwiej, dodaj to do propertiessekcji swojego pom :

<properties>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
</properties>
hamid
źródło
To nie działa w 2017.2.5 dla mnie, dopóki nie użyję tagów <build / configuration>.
Pawel Veselov
1
Żadne z ustawień IntelliJ nic dla mnie nie zrobiło. Ta odpowiedź jest jedyną rzeczą, która naprawiła go po godzinach poszukiwań. Dzięki!
Tim,
12
Działa dobrze, ale nie zapomnij ponownie zaimportować pliku pom.xml, kliknij prawym przyciskiem myszy -> Maven -> Reimport
David Lilljegren
Należy to umieścić w pompie wygenerowanym przez start.spring.io ! Nie wiem, dlaczego tego nie robią. To, co tam umieścili, „<java.version> 1.8 </java.version>” jest bezużyteczne.
User007
1
Upewnij się, że masz już wymagany zestaw SDK / JDK w ustawieniach platformy.
gkephorus
34

Podsumowanie:

  • 'maven-compiler-plugin' ZAWSZE działa! To jest to, co proponuję ci użyć.

Aby zmienić poziom języka, skorzystaj z

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

Właściwości nie zawsze zmieniają poziom języka Intellij!

W poniższym kodzie 1.4 zostało skonfigurowane w pomie za pomocą wtyczki maven-compiler-plugin
(jdk w Intellij to 1.8) i odpowiednio zmieniono poziom językowy projektu na 1.4:

wprowadź opis obrazu tutaj

Zostało dwukrotnie sprawdzone! To jest przykład. W większości przypadków nie będziesz obniżać wersji JDK do 1.4!

Oczywiście, jeśli używasz właściwości, powiedzmy, że wstawiłeś pom 1.8, to jeśli używasz 1.8 JDK w Intellij (domyślny poziom języka to 1.8 lub domyślny język został zmieniony ręcznie), to będziesz mógł kodować w 1.8 ALE podczas kompilacji mvn właściwości NIE będą widoczne i domyślnie zostanie ustawiony Maven 1.5, a kompilacja NIE powiedzie się!

Rudy Vissers
źródło
Btw i myślę, że spowodowało to zamieszanie, Eclipse obsługuje maven.compiler.source i maven.compiler.target.
Rudy Vissers
Zaktualizowałem plik pom, ale musiałem to zmienić również w ustawieniach projektu, aby wokr.
ponury.pingwin
@ gloomy.penguin: Właśnie stworzyłem nowy projekt Idea na podstawie archetypu Maven Quickstart. Następnie spojrzałem na Ustawienia projektu ---> Moduły i przeczytałem 5.0 - słowo kluczowe „enum”, generic, autoboxing itp. Następnie dodałem źródło (1.6) i cel (1.6) z maven-compiler-plugin i zrobiłem dokładnie to samo i przeczytałem 6- @ Override w interfejsach. Myślę, że jest zamieszanie. NIE CHCEMY ZMIENIĆ DOMYŚLNEGO SDK. Nic nie możemy na to poradzić.
Rudy Vissers,
@gloomy: penguin: Jeśli JDK 1.5 jest skonfigurowany domyślnie i zmienisz konfigurację w pom, aby zapytać 1.6, Idea nie zmieni domyślnego SDK na 1.6 lub 1.7 lub 1.8, nawet jeśli dodałeś te jdks do Intellij. Konfiguracja w pom zapytaj Pomysł, aby zmienić wersję źródłową i docelową przy użyciu domyślnego sdk! W przykładzie na obrazku 1.4 został zapytany i domyślny jdk to 1.8 i oczywiście jest OK. Musisz ustawić domyślny jdk, który jest zgodny z wersjami skonfigurowanymi w pom.
Rudy Vissers,
@ gloomy-penguin: Więc 1.8 będzie obsługiwał wszystkie konfiguracje (ale nie 9 !!!). Mam nadzieję, że to pomoże. Powtarzam, właśnie sprawdziłem i działa. I sprawdź wynik w Ustawieniach projektu ---> Moduły.
Rudy Vissers,
7

Zmień źródło, jak pokazano poniżej w pom.xml

<build>
        <finalName>MQService</finalName>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Rahul
źródło
6

Nie sądzę, aby jakakolwiek odpowiedź na to pytanie dotyczyła obaw - „… w IntelliJ ”.

Oto kroki: -

  • Idź do Preferencji w IntelliJ (lub Skrót ⌘ +,)
  • Kompilacja, wykonanie, wdrożenie> Maven> Importer - wybierz menu „ JDK for Importer ”, a następnie wybierz preferowaną wersję Java, kliknij Zastosuj
  • Build, Execution, Deployment> Maven> Runner - wybierz menu „ JRE ”, a następnie wybierz preferowaną wersję Java, kliknij Zastosuj
  • Kliknij OK
papigee
źródło
4

Dodanie poniższych wierszy do katalogu głównego (na poziomie projektu) pom.xml pomogło mi rozwiązać powyższy problem: (obie opcje działały dla mnie)

Opcja 1:

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

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

pierwotnie opublikowane pod adresem: IntelliJ IDEA 13 używa Java 1.5 pomimo ustawienia na 1.7

Amit Kaneria
źródło
1

Można to zrobić na dwa sposoby:

Najpierw dodaj właściwości

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

drugi - Dodaj wtyczkę

<plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
</plugin>
Anuj Teotia
źródło
0

Powinieneś dodać poniższy kod w swoim pom.xml, aby wymusić zmianę poziomu języka

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

teraz intelliJ 2019.3 CE robi to za Ciebie, jeśli przejdziesz do importu, a następnie alt + enter, gdzie pojawi się opcja mówiąca „zmień poziom języka na 8, aby korzystać z tej funkcji”

madroid
źródło
0

otwórz terminal Ubuntu idź do katalogu głównego i wpisz:

export JAVA_HOME = <path to jdk>

na przykład u mnie działa dobrze {zrób to samo w terminalu IntelliJ}.

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

aby sprawdzić ustawiony typ wartości echo $JAVA_HOME

aby sprawdzić typ wersji maven: mvn -version

możesz znaleźć wszystkie ścieżki JDK, wpisując to polecenie, i możesz ustawić wersję JDK.

sudo update-alternatives --config java

sprawdź również, czy masz takie same java -versioni javac -version.

Pankaj gupta
źródło