Làm cách nào để thay đổi phiên bản Java cho Maven trong IntelliJ?


82

Tôi là người mới sử dụng cả Maven và IntelliJ IDEA.

Tôi có một dự án Maven được viết bằng Java 8. Bất cứ khi nào tôi cố gắng xây dựng nó (cửa sổ Maven Projects -> Lifecycle -> biên dịch -> Chạy Maven Build), tôi gặp một loạt lỗi biên dịch:

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

Tôi phải thay đổi giá trị của tham số -source ở đâu? Tôi đã thử thêm nó làm tham số bổ sung trong Cài đặt -> Trình biên dịch -> Trình biên dịch Java, nhưng tôi nhận được kết quả tương tự.

Cả hai cấp độ ngôn ngữ của dự án và mô-đun đều được đặt thành 8.0.

Tôi đang sử dụng Maven 3.2.3 và IntelliJ IDEA Community Edition 13.1.2.


bạn đã thay đổi nó trong một tệp pom chưa?
eis

Cách tiếp cận của tôi là đặt chúng trực tiếp trong IntelliJ theo cách này: http://stackoverflow.com/a/37648709/5154418
Yumi Koizumi

Câu trả lời:


117

Hoặc dễ dàng hơn, thêm cái này vào propertiesphần pom của bạn :

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

Điều này không hoạt động trong 2017.2.5 đối với tôi, cho đến khi tôi sử dụng thẻ <build / configuration>.
Pawel Veselov

Không có cài đặt IntelliJ nào làm được gì cho tôi. Câu trả lời này là thứ duy nhất đã sửa nó sau hàng giờ tìm kiếm. Cảm ơn!
Tim

12
Hoạt động tốt, nhưng đừng quên để tái nhập các tập tin pom.xml, click chuột phải -> Maven -> tái nhập khẩu
David Lilljegren

Điều này nên được đặt trong pom được tạo bởi start.spring.io ! Tôi không biết tại sao họ không làm điều đó. Những gì họ đặt ở đó "<java.version> 1.8 </java.version>" là vô ích.
Người dùng 007

1
Đảm bảo đã có SDK / JDK bắt buộc trong Cài đặt nền tảng.
gkephorus

34

Tóm lược:

  • 'maven-compiler-plugin' LUÔN LUÔN hoạt động! Đó là những gì tôi đề nghị bạn sử dụng.

Để thay đổi cấp độ ngôn ngữ, hãy sử dụng

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

Các thuộc tính không phải lúc nào cũng thay đổi mức ngôn ngữ của Intellij!

Trong đoạn mã bên dưới, 1.4 đã được định cấu hình trong pom bằng maven-compiler-plugin
(jdk của Intellij là 1.8) và cấp độ ngôn ngữ của dự án đã được thay đổi tương ứng thành 1.4:

nhập mô tả hình ảnh ở đây

Nó đã được kiểm tra kỹ lưỡng! Nó là một ví dụ. Thông thường, bạn sẽ không hạ cấp phiên bản JDK xuống 1.4!

Tất nhiên nếu bạn sử dụng thuộc tính, giả sử bạn đặt trong pom 1.8, sau đó nếu bạn sử dụng 1.8 JDK trong Intellij (mặc định mức ngôn ngữ là 1.8 hoặc mặc định ngôn ngữ đã được thay đổi theo cách thủ công), thì bạn sẽ có thể viết mã trong 1.8 NHƯNG khi biên dịch mvn, các thuộc tính sẽ KHÔNG được nhìn thấy và bạn sẽ mặc định là Maven 1.5 và quá trình biên dịch sẽ KHÔNG thành công!


Btw và tôi nghĩ rằng điều này đã tạo ra sự nhầm lẫn, Eclipse không hỗ trợ maven.compiler.source và maven.compiler.target.
Rudy Vissers

Tôi đã cập nhật tệp pom nhưng tôi cũng cần thay đổi điều này trong Cài đặt dự án, để nó hoạt động.
ảm đạm.penguin

@ dark.penguin: Tôi vừa tạo một dự án Ý tưởng mới từ nguyên mẫu Maven Quickstart. Sau đó, tôi nhìn vào Cài đặt dự án ---> Mô-đun và tôi đọc 5.0 - từ khóa 'enum', chung, autoboxing, v.v. Sau đó, tôi đã thêm nguồn (1.6) và mục tiêu (1.6) từ maven-compiler-plugin và thực hiện chính xác giống nhau và tôi đọc 6- @ Ghi đè trong giao diện. Tôi nghĩ rằng có một sự nhầm lẫn. CHÚNG TÔI KHÔNG MUỐN THAY ĐỔI SDK DEFAULT. Chúng tôi không thể làm gì về điều đó.
Rudy Vissers

@gloomy: penguin: Nếu JDK 1.5 được định cấu hình theo mặc định và bạn thay đổi cấu hình trong pom thành hỏi 1.6 thì Idea sẽ không thay đổi SDK mặc định thành 1.6 hoặc 1.7 hoặc 1.8 ngay cả khi bạn đã thêm các jdks này vào Intellij. Cấu hình trong pom yêu cầu Idea thay đổi nguồn và phiên bản đích bằng sdk mặc định! Trong ví dụ trong hình 1.4 đã được hỏi và jdk mặc định là 1.8 và tất nhiên là OK. Bạn phải thiết lập jdk mặc định tương thích với các phiên bản bạn đã định cấu hình trong pom.
Rudy Vissers

@ dark-penguin: Vì vậy, 1.8 sẽ hỗ trợ tất cả các cấu hình (nhưng không phải 9 !!!). Hy vọng nó giúp. Tôi lặp lại tôi vừa kiểm tra và nó hoạt động. Và vui lòng kiểm tra kết quả trong Cài đặt dự án ---> Mô-đun.
Rudy Vissers

7

Thay đổi nguồn như hình dưới đây trong 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>

5

Tôi không nghĩ rằng bất kỳ câu trả lời nào cho câu hỏi giải quyết được mối lo ngại - " ... trong IntelliJ ".

Đây là các bước: -

  • Đi tới Tùy chọn trong IntelliJ (hoặc Phím tắt ⌘ +,)
  • Xây dựng, Thực thi, Triển khai> Maven> Nhà nhập khẩu - chọn " JDK cho Nhà nhập khẩu menu thả xuống ", sau đó chọn phiên bản java ưa thích của bạn, Nhấp vào Áp dụng
  • Build, Execution, Deployment> Maven> Runner - chọn menu thả xuống " JRE " sau đó chọn phiên bản java ưa thích của bạn, Nhấp vào Apply
  • Bấm OK

4

Việc thêm các dòng dưới đây vào thư mục gốc (cấp dự án) pom.xml đã giúp tôi giải quyết vấn đề trên: (cả hai tùy chọn đều phù hợp với tôi)

Lựa chọn 1:

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

Lựa chọn 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>

ban đầu được đăng tại: IntelliJ IDEA 13 sử dụng Java 1.5 mặc dù thiết lập là 1.7


1

Có hai cách để làm điều này :

Đầu tiên- Thêm thuộc tính

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

thứ hai- Thêm Plugin

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

0

Bạn nên thêm mã bên dưới vào pom.xml của mình để buộc cấp độ ngôn ngữ thay đổi

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

bây giờ intelliJ 2019.3 CE thực hiện điều này cho bạn nếu bạn đi đến nhập sau đó alt + enter nơi bạn sẽ nhận được tùy chọn nói "thay đổi cấp độ ngôn ngữ thành 8 để sử dụng chức năng này"


0

mở terminal ubuntu, truy cập thư mục gốc của bạn và gõ:

export JAVA_HOME = <path to jdk>

ví dụ, nó hoạt động tốt đối với tôi {làm tương tự trong IntelliJ terminal}.

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

để kiểm tra loại giá trị đặt echo $JAVA_HOME

để kiểm tra loại phiên bản maven: mvn -version

bạn có thể tìm thấy tất cả đường dẫn của JDK bằng cách gõ lệnh này và bạn có thể đặt phiên bản JDK.

sudo update-alternatives --config java

cũng kiểm tra bạn có giống nhau java -versionjavac -version.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.