bản phát hành mục tiêu không hợp lệ: 1,7


121

Tôi đã thấy những câu hỏi tương tự, nhưng vẫn chưa tìm ra câu trả lời.

Sử dụng trình biên dịch maven, tôi nhận được:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1]

Đây là pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

Phiên bản Javac:

javac 1.7.0_25

Phiên bản Java:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

Bất kỳ ý tưởng những gì nó có thể là?


14
Hầu hết maven khả năng đang chạy sử dụng Java 6.
Peter Lawrey

3
Tôi sẽ kiểm tra tất cả các biến môi trường của bạn để xem có biến nào đang sử dụng Java 6. Ví dụ: Java 7 có thể nằm trên đường dẫn của bạn nhưng tôi nhớ maven sử dụng JAVA_HOME hoặc một cái gì đó tương tự.
Peter Lawrey

36
Thực thi mvn -version. Nó sẽ cho bạn biết nó sử dụng Java nào.
JB Nizet

bạn nói đúng, mvn đang sử dụng java 1.6 - làm thế nào tôi có thể thay đổi điều này?
Karan

1
đặt biến JAVA_HOME vào thư mục chính JDK7 của bạn.
JB Nizet

Câu trả lời:


159

Bạn cần đặt JAVA_HOME thành thư mục chính jdk7 của mình, ví dụ trên Microsoft Windows:

  • "C: \ Program Files \ Java \ jdk1.7.0_40"

hoặc trên OS X:

  • /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

71
Trên máy Mac, nơi jdk6 và JDK7 được cài đặt, điều này có thể bị buộc trong ~ / .profile:export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)
Hank

3
jdk8 cũng có thể được sử dụng để có được tuân thủ JDK7
Wolfgang FAHL

3
nhớ để tải lại ~ / .profile trên mac với:source ~/.profile
Caio Iglesias

Điều này có thể hoạt động cho nhiều thứ nhưng nó không đủ cho Maven và chắc chắn không phải cho plugin trình biên dịch maven. Kiểm tra câu trả lời của Mike cho câu hỏi của riêng anh ấy tại đây: câu hỏi stackoverflow 24705877 Điều này đã giải quyết vấn đề cho tôi cả dòng lệnh VÀ trong eclipse. Ngoài ra, câu trả lời của @LinGao cho câu hỏi stackoverflow 2503658 và việc sử dụng biến $ JAVACMD có thể hữu ích.
Litome

42

Ngoài cài đặt JAVA_HOMEbiến môi trường, bạn phải đảm bảo rằng bạn đang sử dụng đúng JDK trong cấu hình chạy Maven của mình. Đi tới Run -> Run Configuration , chọn cấu hình Maven Build của bạn, chuyển đến tab JRE và đặt Runtime JRE chính xác.

Cấu hình chạy Maven


+1, tôi biết mình đã quên cập nhật thứ gì đó ... Tùy chọn mặc định (đối với tôi) khi tạo cấu hình là "JRE thay thế". Nếu bất kỳ ai khác gặp phải điều này, hãy đảm bảo rằng plugin maven VÀ cấu hình của bạn được cập nhật đúng cách!
king14nyr

Tôi đã có JAVA_HOME phù hợp cho Java 8 nhưng tôi vẫn thiếu cái này. Bạn đã giải quyết được vấn đề của tôi, cảm ơn
dtortola 17/02/16

3

Trong IntelliJ IDEA, điều này đã xảy ra với tôi khi tôi nhập một dự án đang hoạt động tốt và đang chạy với Java 1.7. Tôi dường như đã không thông báo cho IntelliJ rằng java 1.7 đã được cài đặt trên máy của tôi và nó không tìm thấy của tôi $JAVA_HOME.

Trên máy Mac, điều này được giải quyết bằng cách:

Nhấp chuột phải vào mô-đun | Cài đặt mô-đun | Dự án

và thêm SDK 1.7 bằng cách chọn "Mới" trong SDK dự án.

Sau đó, chuyển đến menu IntelliJ IDEA chính | Sở thích | Maven | Á quân

và chọn JRE chính xác. Trong trường hợp của tôi, nó đã cập nhật chính xác Sử dụng Project SDK, hiện đã là 1.7.


Lưu ý rằng ít nhất có Cài đặt và Tùy chọn Dự án cho Intellij trên máy Mac, tôi phải đi tới Cài đặt -> Xây dựng Exec, Triển khai -> Trình biên dịch Java và sau đó đặt phiên bản bytecode của dự án khi cần.
Opentuned

1

Khi maven đang hoạt động bên ngoài Eclipse, nhưng gặp lỗi này sau khi thay đổi JDK, hãy chuyển đến Cấu hình chạy Maven của bạn và ở cuối trang Chính, có tùy chọn 'Thời gian chạy của Maven'. Của tôi đang sử dụng Maven nhúng, vì vậy sau khi chuyển nó sang sử dụng maven bên ngoài của tôi, nó đã hoạt động.


Xin vui lòng cho biết cấu hình Maven Run ở đâu?
R Claven

1
Nhấp chuột phải vào build.xml của bạn, đi tới 'Chạy dưới dạng' và sau đó 'Chạy cấu hình' sẽ là tùy chọn cuối cùng. Nếu bạn cuộn qua các loại cấu hình chạy, một là 'Xây dựng Maven' và có tùy chọn để chọn 'Thời gian chạy Maven'. Có một nút 'cấu hình' bên cạnh đó
djb

0

Điều này có thể hoạt động cho nhiều thứ nhưng nó không đủ cho Maven và chắc chắn không phải cho plugin trình biên dịch maven.

Kiểm tra câu trả lời của Mike cho câu hỏi của chính anh ấy tại đây: câu hỏi stackoverflow 24705877

Điều này đã giải quyết vấn đề cho tôi cả dòng lệnh VÀ trong eclipse.

Ngoài ra, @LinGao câu trả lời cho câu hỏi stackoverflow 2503658 và việc sử dụng biến $ JAVACMD có thể hữu ích nhưng tôi chưa tự mình kiểm tra.

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.