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 -> [Trợ giúp 1]


170

Vấn đề tương tự như một bài đăng trên bản phát hành mục tiêu không hợp lệ: 1.7 nhưng sau khi theo dõi blog, vấn đề của tôi vẫn chưa được giải quyết.

Không thể thực hiện mục tiêu org.apache.maven.plugins: maven-Trình biên dịch-plugin: 3.1: biên dịch (mặc định biên dịch) trên dự án hm_app: 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 -> [Trợ giúp 1]

Tôi đã làm theo hướng dẫn khi tôi gặp vấn đề 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

3
... và bạn có chắc là bạn đã cài đặt Java 8 ở đâu đó không?
Makoto

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

3
Được chứ. Vậy tại sao bạn lại cố gắng biên dịch mã Java 8 mà không có trình biên dịch Java 8?
Makoto

@Makoto ty đã xem xét vấn đề của tôi khi cài đặt java 8 đã giải quyết nó .... ty man :)
rvd

@Makoto Cuối cùng tôi đã hiểu những gì bạn đang nói "Được rồi. Vậy tại sao bạn lại cố gắng biên dịch mã Java 8 mà không có trình biên dịch Java 8?" vì vậy tôi chỉ thay đổi trong tệp pom.xml java.version> 1.8 </java.version> thành java.version> 1.7 </java.version> và tôi cũng có thể sử dụng biên dịch mvn trên java7
rvd

Câu trả lời:


281

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

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

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


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

1
Đó là đặc biệt nơi maven tìm kiếm phiên bản java. Vì vậy, hiệu quả là bạn đã thay đổi phiên bản java thành phiên bản bạn đã cài đặt trên% JAVA_HOME.
Zavior 4/2/2015

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 đến 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).
bruce szalwinski

Vâng, đúng bạn có tôi. Tôi đã thay đổi nó để biên dịch một chương trình kế thừa khác chỉ hỗ trợ 1.7 ngày hôm qua: D Cảm ơn!
Davut Gürbüz

31

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

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à mục tiêu thành 1.7
nghĩ

Tôi có thể tìm thấy trong tập tin này?
Yusril Maulidan Raji

21

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


đó là sự thật, vì vậy chúng tôi phải theo dõi những điều cần kiểm tra vào lần tới nếu lỗi này xuất hiện: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

Vấn đề đã được giải quyết khi tôi có JDK trỏ tới 1.7 và JRE trỏ đến 1.8. Kiểm tra lệnh nhắc tôi gõ

java -version

javac -version.

Cả hai nên giống nhau.  


5

Đối với nhật thực ở đây là cách tôi giải quyết vấn đề của mình:

  1. Tùy chọn -> Trình biên dịch -> Trình độ người khiếu nại trình biên dịch (Thay đổi thành 1.8) nhập mô tả hình ảnh ở đây

  2. Hội nghị -> JREs đã cài đặt -> chọn JAVA SE 8 1.8 nhập mô tả hình ảnh ở đây

  3. Xây dựng lại thông qua maven bằng cách sử dụng Run as maven build.

Nó không nên hiển thị cho bạn lỗi mục tiêu không hợp lệ nữa.
Lưu ý: Tôi không phải đặt hoặc thay đổi bất kỳ biến nào khác trong thiết bị đầu cuối của mình. Hi vọng điêu nay co ich.


2

Đưa nó vào .profile của bạn sẽ tự động chăm sóc $JAVA_HOME

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

Đóng vỏ của bạn sau đó, mở một cái mới và kiểm tra với

echo $JAVA_HOME

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

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

Nếu không , hãy xóa mọi bài tập khác của JAVA_HOME trong tập lệnh 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 một tập lệnh .để chúng bị ẩ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

1

Vấn đề tôi gặp phải là tôi có thể tạo ra một bản dựng maven từ dấu nhắc lệnh chứ không phải từ Eclipse. Điều 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ũng có thể phù hợp với 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.


Đây là vấn đề và giải pháp của tôi.
Skychan

1

Tôi đã phải đối mặt với vấn đề này khi triển khai trên Dokku, vì một số lý do, nó đã chọn JDK 1.7

Tạo một system.propertiestập tin và thiết lập đã java.runtime.version=1.8giải quyết vấn đề. Dokku hiện sử dụng phiên bản Java 8. Chọn JDK trên Heroku

Tôi chưa bao giờ phải làm điều đó trước đây ...


Các gợi ý vẫn hoạt động. Tôi đã phải tìm kiếm rất nhiều để thay đổi phiên bản Java trong Dokku thành 11. Cảm ơn bạn rất nhiều.
Vanderbilt

1

Như Camila Macedo đã đề cập - bạn phải chỉ rõ phiên bản java cho trình biên dịch-plugin. Đối với khởi động mùa xuân, bạn có thể làm điều đó bằng thuộc tính tiếp theo:

  <properties>
    <java.version>1.8</java.version>
    <maven.compiler.release>8</maven.compiler.release>
  </properties>

Có, cài đặt maven.compiler.releasecố định nó trong dự án Maven của tôi.
Cortex

1

Sử dụng IntelliJ tôi chỉ phải cài đặt Phiên bản JDK (cao hơn) khác. Sau khi khởi động lại IDE, mọi thứ đã hoạt động và thậm chí tất cả các phụ thuộc đã được giải quyết.


1
Khởi động lại intelliJ là chìa khóa cho tôi. Tôi đã cập nhật biến môi trường của JAVA_HOME để trỏ đến phiên bản java khác nhau, nhưng có vẻ như biến hệ thống không làm mới trong phiên CMD hiện có. Có thể nó là đủ để chỉ tạo phiên Terminal mới.
Ubeogesh

0

Câu hỏi này không hỏi rõ ràng về Docker, nhưng tôi đã nhận được lỗi tương tự khi tôi có tệp pom.xml đang 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 thử nghiệm với bộ chứa Docker bằng cách 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, cách khắc phục là nhắm mục tiêu chính xác phiên bản 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ể tìm hiểu thêm ở đây .)


0

Trên máy Windows, bạn có thể tạm thời đặt phiên bản Java.
Ví dụ: để thay đổi phiên bản thành Java 8, hãy chạy lệnh này trên cmd:

set JAVA_HOME=C:\\...\jdk1.8.0_65

0

Thực hiện một Cập nhật Maven bắt buộc sẽ mang Phiên bản 1.8 Jar tương thích và sau đó trong khi xây dựng, hãy cập nhật Phiên bản JRE trong môi trường Thực thi thành 1.8 từ Chạy Cấu hình và nhấn RUN


0

Nếu bạn đang sử dụng IDE Eclipse thì hãy vào trong menu Window và chọn các tùy chọn và ở đó bạn tìm kiếm các JRE đã cài đặt và chọn JRE bạn cần để xây dựng dự án


-4

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

Tôi đã mở pom.xmlvà thay thế một trong các plugin như bên dưới.

<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 chỉnh sửa các thẻ nguồn và thẻ đích 1.8, tôi đã thay đổi nó thành 1.7và nó hoạt động.


Bạn có hiểu sự thay đổi mà bạn đã làm hay bạn chỉ thực hiện thay đổi với hy vọng điều tốt nhất?
Popeye

Cả hai. Tôi hiểu rằng dự án hiện đang chạy trên phiên bản Java 1.7. Tôi đã làm điều đó với hy vọng nó sẽ làm việc.
VIJAYKUMAR REDDY ALAVALA
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.