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.


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>

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


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>

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

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


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>

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”


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.