2015-02-03 20 views
117

Vấn đề tương tự như được đăng trên invalid target release: 1.7 nhưng sau khi theo dõi blog, sự cố của tôi vẫn chưa được giải quyết.Biên dịch lỗi nghiêm trọng: phát hành mục tiêu không hợp lệ: 1.8 -> [Help 1]

Không thực thi org.apache.maven.plugins Mục Tiêu: maven-biên dịch-plugin: 3.1: biên dịch (mặc định-biên dịch) trên hm_app dự án: Fatal error biên soạn: phát hành mục tiêu không hợp lệ: 1,8 -> [Help 1 ]

Tôi đã theo dõi as tutorial khi tôi gặp sự cố này.

abt java & mvn 

C:\mvn>echo %JAVA_HOME% 
C:\mvn>echo %JRE_HOME% 
C:\mvn>echo %MAVEN_HOME% yields 

đầu ra

C:\Program Files\Java\jdk1.7.0_51 
C:\Program Files\Java\jre7 
C:\apache-maven-3.0.4 
+2

... và bạn chắc chắn có Java 8 được cài đặt ở đâu đó? – Makoto

+0

tôi có x86, 64 java 7 và không có java 8 – rvd

+3

OK. Vậy tại sao bạn đang cố gắng biên dịch mã Java 8 mà không cần trình biên dịch Java 8? – Makoto

Trả lời

206

bạn đã thiết %JAVA_HOME của bạn để JDK 1.7, nhưng bạn đang cố gắng để biên dịch sử dụng 1.8. Cài đặt jdk 1.8 và đảm bảo rằng các điểm %JAVA_HOME của bạn vào đó hoặc thả bản phát hành đích xuống 1.7.

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

Việc phát hành mục tiêu đề cập đến phiên bản jdk.

+4

một giải pháp có thể có hơn trong trường hợp của tôi là chỉnh sửa tệp pom.xml java.version> 1.8 thành java.version> 1.7 – rvd

+1

Đó là đặc biệt nơi mà maven tìm kiếm phiên bản java. Vì vậy, bạn đã thay đổi phiên bản java thành một phiên bản bạn đã cài đặt trên% JAVA_HOME của mình một cách hiệu quả. – Zavior

+2

Trên máy mac của tôi, tôi xuất JAVA_HOME = '/ usr/libexec/java_home -v 1.8' để đặt JAVA_HOME thành vị trí thích hợp cho 1.8 JDK. Cung cấp phiên bản yêu thích của bạn thay cho 1.8. (Có backticks sau = và sau 8). –

19

Đặt giá trị trong plugin:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.1</version> 
    <configuration> 
     <source>1.8</source> 
     <target>1.8</target> 
    </configuration> 
</plugin> 

Các lỗi được sử dụng:

<source>${java.version}</source> 
<target>${java.version}</target> 
+2

Trong trường hợp của tôi, giải pháp là đặt cả nguồn và đích thành 1,7 – thinkhy

1

Đưa rằng trong .profile của bạn sẽ tự động chăm sóc của bạn $JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home) 

Đóng vỏ của bạn sau đó, mở vỏ mới và thử nghiệm với

echo $JAVA_HOME 

Nó sẽ hiển thị một cái gì đó giống như

/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home 

Nếu không, loại bỏ bất kỳ tập khác của JAVA_HOME trong kịch bản khởi động của bạn. Hãy nhớ rằng các tập lệnh khởi động này bắt đầu bằng . để chúng được ẩn và sẽ không được bao gồm khi sử dụng ký tự đại diện *, ví dụ: nếu bạn muốn grep tất cả các tệp trong thư mục chính của mình, bạn cần phải:

grep -s JAVA_HOME ~/.* --exclude=.bash_history 
12

Trong trường hợp của tôi "Cấu hình chạy" đã sử dụng sai JRE (1.7). Hãy chắc chắn kiểm tra Chạy -> Chạy cấu hình -> (Tab) JRE là một số jdk1.8.x.

4

Vấn đề đã được giải quyết khi tôi đang có một JDK trỏ tới 1,7 và JRE trỏ đến 1,8. Kiểm tra tại dấu nhắc lệnh, tôi gõ

java -version 

javac -version. 

Cả hai nên cùng.  

0

Vấn đề tôi phải đối mặt là tôi đã có thể tạo một maven xây dựng từ dấu nhắc lệnh nhưng không phải từ Eclipse.What làm việc cho tôi trong nhật thực là tôi đã thay đổi cấu hình chạy để trỏ đến thư mục JRE bên trong JDK thay vì để nó trong thư mục JDK chỉ theo tiêu chuẩn. Giải pháp này có thể làm việc cho bạn, nhưng hãy thử điều này nếu và chỉ khi tất cả các đường dẫn java là chính xác, java và javac đang hiển thị cùng một phiên bản như hiện tại trong mục tiêu của pom.xml.

-2

gì làm việc trong trường hợp của tôi là thế này:

tôi mở pom.xml và thay thế một trong những plug-ins như dưới đây.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.2</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 

Trước khi tôi thay đổi nội dung các thẻ nguồn và mục tiêu cả hai đã 1.8, tôi đã thay đổi đó để 1.7 và nó làm việc.

0

Câu hỏi này đã không yêu cầu một cách rõ ràng về Docker, nhưng tôi nhận được lỗi tương tự khi tôi đã có một tập tin pom.xml được nhắm mục tiêu 1.9 ...

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <maven.compiler.source>1.9</maven.compiler.source> 
    <maven.compiler.target>1.9</maven.compiler.target> 
</properties> 

... nhưng sau đó đã cố gắng để chạy kiểm tra đối với vùng chứa Docker bằng cách chỉ định chính "maven".

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven mvn -e test 

Đối với tôi, bản sửa lỗi là nhắm mục tiêu phiên bản chính xác mà tôi cần.

docker run -t --rm -v m2_repository:/root/.m2/repository -v $(pwd):/work -w /work maven:3.5.2-jdk-9 mvn test 

(Bạn có thể learn more here.)

Các vấn đề liên quan