Kompilasi kesalahan fatal: rilis target tidak valid: 1.8 -> [Bantuan 1]


170

Masalah serupa seperti yang diposting pada rilis target yang tidak valid: 1,7 tetapi setelah mengikuti blog masalah saya masih belum terselesaikan.

Gagal menjalankan goal org.apache.maven.plugins: maven-compiler-plugin: 3.1: kompilasi (default-compile) pada proyek hm_app: Kompilasi kesalahan fatal: kompilasi target yang salah: rilis target yang tidak valid: 1.8 -> [Help 1]

Saya mengikuti tutorial ketika saya menghadapi masalah ini.

abt java & mvn

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

output

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

3
... dan Anda yakin Anda telah menginstal Java 8 di suatu tempat?
Makoto

saya punya x86, 64 java 7 dan tidak ada java 8
rvd

3
Baik. Jadi mengapa Anda mencoba mengkompilasi kode Java 8 tanpa kompiler Java 8?
Makoto

@ Makoto ty untuk melihat masalah saya menginstal java 8 menyelesaikannya .... ty man :)
rvd

@ Makoto Akhirnya saya mengerti apa yang Anda katakan "Oke. Jadi mengapa Anda mencoba mengkompilasi kode Java 8 tanpa kompiler Java 8?" jadi saya hanya mengubah file pom.xml saya java.version> 1.8 </java.version> ke java.version> 1.7 </java.version> dan saya bisa menggunakan kompilasi mvn di java7 juga
rvd

Jawaban:


281

Anda telah menyetel %JAVA_HOMEke jdk 1.7, tetapi Anda mencoba mengompilasinya menggunakan 1.8. Instal jdk 1.8 dan pastikan %JAVA_HOMEpoin Anda untuk itu atau jatuhkan target rilis ke 1.7.

rilis target tidak valid: 1.8

Rilis target mengacu pada versi jdk.


7
satu lagi solusi yang mungkin dalam kasus saya adalah mengedit file pom.xml java.version> 1.8 </java.version> ke java.version> 1.7 </java.version>
rvd

1
Itu secara khusus tempat pakar mencari versi java. Jadi, secara efektif Anda mengubah versi java menjadi yang Anda instal di% JAVA_HOME Anda.
Zavior

2
Di mac saya, saya mengekspor JAVA_HOME = /usr/libexec/java_home -v 1.8untuk mengatur JAVA_HOME ke lokasi yang tepat untuk 1,8 JDK. Berikan versi favorit Anda menggantikan 1.8. (Ada backticks setelah = dan setelah 8).
bruce szalwinski

Ya, benar, Anda mendapatkan saya. Saya mengubahnya untuk mengkompilasi program warisan lain yang hanya mendukung 1,7 kemarin: D Terima kasih!
Davut Gürbüz

31

Masukkan nilai dalam 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>

Kesalahan itu digunakan:

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

2
Dalam kasus saya, solusinya adalah menetapkan sumber dan target menjadi 1,7
thinkhy

dalam file apa saya dapat menemukan ini?
Yusril Maulidan Raji

21

Dalam kasus saya, pakar "Jalankan konfigurasi" menggunakan JRE yang salah (1.7). Pastikan untuk memeriksa Run -> Run Configurations -> (Tab) JRE untuk menjadi beberapa jdk1.8.x.


itu benar, jadi kami harus mengikuti hal-hal berikut untuk memeriksa waktu berikutnya jika kesalahan ini terjadi: JAVA_HOME, BUILD_Configuration, RUN_Configuration
Farhan

13

Masalah ini teratasi karena saya memiliki JDK yang menunjuk ke 1.7 dan JRE menunjuk ke 1.8. Perintah masuk meminta saya mengetik

java -version

dan

javac -version.

Keduanya harus sama.  


5

Untuk gerhana di sini adalah bagaimana saya memecahkan masalah saya:

  1. Preferensi -> Compiler -> Level Compiler Complainer (Ubah ke 1.8) masukkan deskripsi gambar di sini

  2. Perferences -> Installed JREs -> pilih JAVA SE 8 1.8 masukkan deskripsi gambar di sini

  3. Rebuild via maven menggunakan Run as maven build.

Seharusnya tidak menunjukkan kesalahan target yang tidak valid lagi.
Catatan: Saya tidak perlu mengatur atau mengubah variabel lain di terminal saya. Semoga ini membantu.


2

Menempatkan itu di profil Anda. Secara dinamis akan mengurus Anda $JAVA_HOME

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

Tutup cangkang Anda setelah itu, buka yang baru dan uji dengan

echo $JAVA_HOME

Seharusnya menampilkan sesuatu seperti

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

Jika tidak , hapus tugas lain dari JAVA_HOME di skrip startup Anda. Ingat, bahwa skrip startup ini dimulai dengan .sehingga mereka disembunyikan dan tidak akan disertakan saat menggunakan *wildcard, mis. Jika Anda ingin mengambil semua file direktori home Anda, Anda perlu:

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

1

Masalah yang saya hadapi adalah bahwa saya bisa membuat maven build dari command prompt tetapi tidak dari Eclipse. Yang berhasil bagi saya di eclipse adalah saya mengubah konfigurasi run untuk menunjuk ke folder JRE di dalam JDK daripada meninggalkannya di Folder JDK hanya sesuai standar. Solusi ini dapat bekerja untuk Anda juga tetapi coba ini jika dan hanya jika semua jalur java benar, java dan javac menunjukkan versi yang sama seperti yang ada pada target pom.xml.


Ini adalah masalah dan solusi saya.
Skychan

1

Saya menghadapi masalah penyebaran ini di Dokku, untuk beberapa alasan itu memilih JDK 1.7

Membuat system.propertiesfile dan pengaturan java.runtime.version=1.8menyelesaikan masalah. Dokku sekarang menggunakan Java versi 8. Memilih JDK di Heroku

Saya tidak pernah harus melakukannya sebelumnya ...


Petunjuk masih bekerja. Saya harus mencari banyak untuk mengubah versi Java di Dokku ke 11. Terima kasih banyak.
Tuan Vanderbilt

1

Seperti yang disebutkan oleh Camila Macedo - Anda harus secara eksplisit menunjukkan versi java untuk kompiler-plugin. Untuk boot musim semi Anda dapat melakukannya dengan properti berikutnya:

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

Ya, pengaturan maven.compiler.releasediperbaiki di proyek Maven saya.
Cortex

1

Menggunakan IntelliJ, saya hanya perlu menginstal Versi JDK (lebih tinggi) yang lain. Setelah memulai ulang IDE, semuanya bekerja dan bahkan semua dependensi diselesaikan.


1
Memulai kembali kecerdasan adalah kuncinya bagi saya. Saya memperbarui variabel lingkungan JAVA_HOME untuk menunjuk ke versi java yang berbeda, tetapi tampaknya variabel sistem tidak menyegarkan di sesi CMD yang ada. Mungkin cukup membuat sesi Terminal baru saja.
Ubeogesh

0

Pertanyaan ini tidak menanyakan secara eksplisit tentang Docker, tetapi saya menerima kesalahan yang sama ketika saya memiliki file pom.xml yang menargetkan ...

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

... tetapi kemudian mencoba menjalankan tes terhadap wadah Docker dengan menentukan "pakar" dengan sendirinya.

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

Bagi saya, perbaikannya adalah menargetkan versi persis yang saya butuhkan.

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

(Anda dapat mempelajari lebih lanjut di sini .)


0

Pada mesin Windows Anda dapat mengatur versi Java untuk sementara.
Misalnya, untuk mengubah versi ke Java 8, jalankan perintah ini di cmd:

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

0

Lakukan Pembaruan Maven gaya yang akan membawa Versi 1,8 Jar yang kompatibel dan kemudian saat membangun, perbarui Versi JRE di lingkungan Jalankan ke 1,8 dari Run Configurations dan tekan RUN


0

Jika Anda menggunakan Eclipse IDE kemudian masuk ke dalam menu Window dan pilih preferensi dan di sana Anda mencari JRE yang diinstal dan pilih JRE yang Anda butuhkan untuk membangun proyek


-4

Apa yang berhasil dalam kasus saya adalah ini:

Saya membuka pom.xmldan mengganti salah satu plug-in seperti di bawah ini.

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

Sebelum saya mengedit tag sumber dan target 1.8, saya mengubahnya ke 1.7dan berhasil.


Apakah Anda memahami perubahan yang telah Anda lakukan atau Anda hanya melakukan perubahan dengan harapan yang terbaik?
Popeye

Kedua. Saya mengerti bahwa proyek ini sekarang berjalan pada versi Java 1.7. Saya melakukan itu dengan harapan itu akan berhasil.
VIJAYKUMAR REDDY ALAVALA
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.