Build Maven gagal: “Tidak dapat menemukan Compiler Javac di: masalah jre atau jdk”

112

Saya menyetel JAVA_HOME saya ke:

C:\Program Files (x86)\Java\jdk1.6.0_18

Setelah saya jalankan maven install, saya mendapatkan pesan ini dari Eclipse :

Alasan:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

Saya yakin ini adalah bagian yang sulit

Harap pastikan Anda menggunakan JDK 1.4 atau lebih tinggi dan bukan JRE

Ketika saya menjalankan konfigurasi, ini disetel ke JRE6. Bagaimana cara mengubahnya ke JDK 1.6 yang sudah saya instal?

Saya bahkan mencoba memodifikasi plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

Masih saya mendapatkan kesalahan yang sama.

Saya menggunakan plugin Eclipse Maven. Bagaimana cara mengubah dari JRE ke JDK di Eclipse?

Gandalf StormCrow
sumber
Sudahkah Anda memeriksa ulang menggunakan perintah baris setperintah untuk memastikan JAVA_HOME disetel seperti yang Anda pikirkan?
Powerlord
Saya menggunakan java setiap hari .. semuanya bekerja dengan baik di sini: java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
Gandalf StormCrow
1
Setel <fork> true </fork> saat menyetel file yang dapat dieksekusi.
Robin
Itu tidak benar-benar memberi tahu kita instalasi Java mana yang java -versionsedang berjalan; bisa jadi JRE atau JDK install. javac -versionakan menjadi sedikit lebih berguna. Namun, meskipun PATH benar dan JAVA_HOME salah, ini masih akan muncul seperti yang Anda harapkan.
Powerlord
1
Juga, yang dapat dieksekusi harus ... \ bin \ javac, Anda harus menentukan yang dapat dieksekusi yang sebenarnya, bukan hanya jalurnya.
Robin

Jawaban:

141

Anda bisa mencoba memperbarui JDK Eclipse yang digunakan, sebagai berikut:

Tambahkan dan atur JRE di menu WindowPreferences ...JavaInstalled JREs :

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

Jika bukan ini masalahnya, mungkin tanda kurung dan spasi di jalur JAVA_HOME menyebabkan masalah. Coba salin JDK Anda ke lokasi lain dan perbarui JAVA_HOME Anda.

lucrussell.dll
sumber
1
Ini memang bagian pertama dari pertanyaan Anda, hal JAVA_HOME baik
Gandalf StormCrow
47
Bagi saya langkah ekstra diperlukan: pergi ke properti proyek tersebut-> java build path-> libraries-> pilih "JRE System Library", klik Edit dan pilih "Workspace default JRE"
maayank
1
tidak cukup bagi saya, harus mengedit eclipse.ini. Saya yakin ada bug.
ruhsuzbaykus
Ini berfungsi untuk saya hanya ketika saya memeriksa jdk yang sesuai di Lingkungan Eksekusi -> JRE yang kompatibel.
Vedran
9
Selain itu, jika Anda menjalankan Maven dari konfigurasi run eclipse yang Anda buat sebelum konfigurasi ini berubah, ingat untuk membuka jendela Run konfigurasi / tab JRE dan memilih JRE yang benar. Jika tidak, Anda bisa menggunakan JRE lama yang salah bahkan setelah memperbarui pengaturan gerhana dan proyek Anda ke yang baru.
Diana
20

File eclipse.ini membutuhkan vmargumen untuk mengarah ke lokasi JDK Anda.

Edit eclipse.inifile tersebut untuk diarahkan ke beranda JDK Anda, seperti berikut -

-vm
C:\Program Files\Java\jdk1.6.0_06

Ini memastikan bahwa Eclipse akan menjalankan JDK dan bukan JRE default apa pun di komputer Anda.

Sai Hegde
sumber
5
Ini memperbaiki masalah saya. Dari penelitian di web, tampaknya Maven menggunakan JAVA_HOME, tetapi Plugin Maven tidak mengetahui apa-apa tentang JAVA_HOME dan sebagai gantinya menggunakan VM yang digunakan untuk memulai Eclipse.
jnosek
13

Anda mencoba:

Pergi ke Preferences/Java/Installed JREsdan tambahkan satu untuk lokasi "C:\Program Files\Java\jdk1.6.0_27\jreatau sesuatu seperti itu.

Hapus satu untuk C:\Program Files\Java\jre6

Seperti yang Anda lihat, jalur C:\Program Files\Java\jre6\..\lib\tools.jarhanya masuk akal jika bagian pertama (hingga / ..) diganti oleh C:\Program Files\Java\jdk1.6.0_27\jre.

cuocdoibian1971
sumber
10

Menetapkan garpu ke true menyelesaikan masalah untuk saya.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
Prash
sumber
9

Saya memiliki masalah yang sama persis ! Saya telah mencari dan mencari selama berhari-hari karena semua ocehan tentang "letakkan -vm c: \ program files \ java \ jdkxxxxx \ bin" di ini ar sebagai argumen untuk jalan pintas sama sekali tidak membantu !

(Apakah saya terdengar frustrasi? Percayalah, itu meremehkan! Saya sangat marah karena saya kehilangan seminggu mencoba membuat Maven dapat diandalkan!)

Saya memiliki perilaku yang sangat tidak terduga. Terkadang dikompilasi dan terkadang tidak. Jika saya melakukan maven clean, itu tidak dapat menemukan kompiler dan gagal. Jika saya kemudian mengubah sesuatu di jalur pembuatan, itu tiba-tiba berfungsi lagi !!

Sampai saya masuk ke menu WindowPreferencesJavaInstalled JRE's . Saya menambahkan JRE baru menggunakan lokasi JDK dan kemudian menghapus JRE tersebut. Tiba-tiba Maven berlari dengan stabil!

Mungkinkah ini layak untuk menuliskan huruf dengan ukuran font 30 atau lebih di manual Apache?

Dengan segala hormat, ini benar-benar keterlaluan bagi komunitas Jawa! Saya tidak dapat membayangkan berapa hari yang hilang oleh semua orang ini, mencoba menyelesaikan masalah mereka seperti ini! Saya tidak mungkin membayangkan ini dirilis sebagai versi final. Saya pribadi bahkan tidak akan berani merilis hal seperti itu dengan nama perangkat lunak beta ...

Salam baik cara .... Setelah seminggu mengutak-atik saya akhirnya bisa mulai berkembang. Saya harap bos saya tidak akan tahu tentang ini. Saya membutuhkan banyak upaya untuk meyakinkannya agar tidak membuka .NET dan saya sudah merasa menyesal.

Lorenzo
sumber
1
Intinya, gunakan dari konsol bukan dari eclipse Anda tidak akan memiliki masalah seperti ini, itulah yang saya sadari setelah beberapa bulan menggunakannya, sekarang cukup nyaman dengan maven
Gandalf StormCrow
Ini lebih merupakan gerhana ... masalah m2e .. Saya memiliki masalah yang sama dan IDE lainnya (netbeans dan IDEA) bekerja dengan sempurna.
joshua
3

Saya mendapat masalah yang sama menggunakan Run as -> Maven install di Eclipse. JAVA_HOME dan eclipse.ini baik-baik saja dan menunjuk ke JDK terbaru saya. Tapi m2clipse menggunakan JRE. Menggunakan mvn install di luar Eclipse bekerja dengan baik!

Dalam kasus saya, saya memecahkan masalah sebagai berikut:

  1. Arahkan di Eclipse: menu WindowPreferencesJavaInstalled JREs
  2. Ada dua entri tidak aktif untuk JRE dan JDK. Yang aktif adalah JDK yang terinstal terbaru. Hapus semua entri kecuali yang harus digunakan Maven.

Saya pikir Maven tidak memperhitungkan mana yang aktif ...

Markus
sumber
3

Saya baru saja menginstal Maven 3.0.4, mengatur M2_HOME, M2dan JAVA_HOMEkarenanya. Saya kemudian menjalankan perintah berikut:

mvn archetype:generate....

mvn compile

Aku gagal pesan seperti: maven unable to locate javac compiler.

Di komputer saya, saya menginstal JRE default di C: \ program files \ java \ jre.1.6 . Dan saya memiliki C lainnya : \ java \ jdk1.6 dan JAVA_HOMEset ke C: \ java \ jdk1.6 ini .

Saya tidak melihat ada yang salah dengan pengaturan saya. Setelah mencari, saya memutuskan untuk melihat mvn.bat, saya menggemakan %JAVA_HOME%setiap langkah dan itu ditampilkan dengan benar C:\java\jdk1.6, tetapi ketika saya menjalankan perintah mvn --version, itu ditampilkan Java home: C: \ program files \ java \ jre1.1.6 .

Akhirnya, saya menemukan bahwa saya hanya perlu mengatur -Djava.home=c:\java\jdk1.6seperti pada perintah di bawah ini, dan berfungsi dengan baik sekarang:

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

Catatan: Ini untuk mvndi baris perintah dan bukan dengan Eclipse.

smngo
sumber
Hei, kamu tidak perlu pergi dan selalu jelaskan setiap langkah yang kamu lakukan. Silakan lihat Bagaimana menjawab intinya .
mtk
Tampaknya seperti hack (tapi hei ... jika berhasil untuk Anda!) Tetapi menarik bahwa baris perintah maven mengambil java home yang salah - ini adalah masalah kami saat ini.
plasma147
2

Saya memecahkan masalah dengan mengubah lokasi JRE yang diinstal ke direktori yang ada di JDK itu sendiri. Menetapkan nilai yang tepat dariJAVA_HOME variabel lingkungan yang tidak menyelesaikan masalah.

Dalam kasus saya, ada dua direktori

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

Awalnya saya menetapkan C:\Program Files\Java\jre7sebagai JRE Terpasang di Eclipse dan saya mendapatkan kesalahan yang sama dalam kasus Maven (Ant berfungsi dengan baik).

Dengan mengubah JRE yang diinstal menjadi JRE yang C:\Program Files\Java\jdk1.7.0_03\jre7Terinstal di Eclipse, masalah telah terpecahkan.

Nikhil
sumber
2

Jangan lupa bahwa jika Anda menjalankan proyek dari konfigurasi Eclipse tertentu, Anda harus mengubah Java Runtime dalam 'Run Configurations' -> 'Your maven configuration' -> 'JRE tab' setelah Anda menambahkan JDK yang tepat ke preferensi Eclipse Anda.

Ivan Fernandez
sumber
2

Sepertinya Maven menggunakan JRE, bukan JDK. Mungkin Anda menginstal Maven sebelum menginstal JDK?

Periksa file pengaturan . Ada tiga total, sistem, pengguna, dan proyek. Kemungkinan besar ada di konfigurasi instalasi ($ M2_HOME / conf / settings.xml) atau, mungkin, konfigurasi per pengguna ($ {user.dir} /. M2 / settings.xml).

Devon_C_Miller
sumber
2

Penyiapan gerhana saja

Lakukan langkah-langkah berikut:

  1. Klik kanan pada Eclipse project Properties

  2. Jalur Build Java → Perpustakaan

  3. Pilih JRE System Library → Klik Edittombol

  4. Klik tombol "Installed JREs ..."

  5. Edit JRE sebagai: Setel JRE Home = JAVA_HOME atau JAVA_HOME \ jre

Tangkapan layar:

Masukkan deskripsi gambar di sini

Parthasarathy B
sumber
Ini berhasil untuk saya, terima kasih. Saya mengubah rumah JRE ke folder JDK.
LadyBernkastel
1

Klik kanan pada menu ProjectPropertiesJava Build Path .

Pilih JRE System Path → Edit . Pilih Workspace Default JRE, dan arahkan ke JDK> 1.4.

asHIS
sumber
1

Gunakan menu WindowPreferencesJavaInstalled JREsExecution Environments -> klik kotak centang di sisi kanan.

Gambotik
sumber
1

Solusinya sederhana. Terkadang Eclipse WindowsPreferencesJavaInstalled JREs mengarah ke C:\Program files\Java\jre.

Ketika saya mengubahnya menjadi C:\Program files\Java\JDK 6.0\jreitu berhasil 100%.

santhosh
sumber
1

Seperti yang disebutkan oleh beberapa orang lain, Eclipse WindowPreferences ...JavaInstalled JREs harus mengarah ke JDK yang Anda instal, bukan ke JRE. Hanya dengan begitu ia dapat menemukan file../lib folder yang disebutkan dalam pesan kesalahan.

Bahkan dengan ini, masalahnya bisa berulang. Jalan keluar saya di Eclipse v4.2 (Juno) adalah dengan melakukan menu MavenPerbarui proyek ... setelah itu masalahnya hilang.

Saya menduga alasannya adalah bahwa beberapa file yang dihasilkan Eclipse (.classpath, .project, .preferences) berada di Subversion untuk proyek di mana saya mengalami masalah ini. Dengan demikian, pembaruan SVN menyebabkan masalah, dan pembaruan konfigurasi dari Maven di Eclipse menyelesaikannya lagi.

Solusi nyata: hilangkan file .file yang dihasilkan Eclipse dari kontrol versi , dan biarkan plugin Maven Eclipse menangani konfigurasi proyek. (Petunjuk / saran tambahan dipersilakan) .

avandeursen
sumber
1

Dalam kasus saya, di menu Eclipse RunDebug Configurations .

Pada tab JRE memilih JDK daripada JRE memecahkan masalah.

Vathsala Weerasinghe
sumber
1

Saya memiliki masalah yang sama di Amazon Linux. Ternyata saya harus menginstal JDK versi pengembang:

sudo yum -y install java-1.7.0-openjdk-devel
Evan Siroky
sumber
1

Buka menu Eclipse WindowPreferences ...JavaInstalled JREs harus mengarah ke JDK yang Anda instal, bukan ke JRE.

Sudipto
sumber
Tetapi ini juga ada dalam banyak jawaban sebelumnya.
Peter Mortensen
0

Anda juga dapat memastikan bahwa Eclipse memiliki semua perubahan yang diperbarui. Untuk melakukannya, klik kanan proyek Anda, lalu tekan item menu "Segarkan".

GregNash
sumber
0

Banyak jawaban lain memberi tahu Anda untuk mengarahkan Eclipse Anda ke JDK, bukan JRE.

Berikut adalah jawaban lain dengan lebih spesifik / jelas [daripada yang saya lihat dalam jawaban mana pun di sini] langkah demi langkah tentang cara melakukannya: Bagaimana Anda menginstal JDK?

Itulah yang memecahkan saya untuk masalah yang sama ini.

cellepo
sumber
0

Pastikan "-vm" di eclipse.ini berada pada dua garis terpisah, yaitu:

-vm
C:\Program Files\Java\jdk1.6.0_06
Kevin Van Dyck
sumber
0

Saya akan menebak bahwa lokasi kompilator didefinisikan dalam POM untuk plugin kompilator berada di lokasi JRE yang ditampilkan, bukan lokasi JDK yang Anda tunjuk JAVA_HOME.

Robin
sumber
@Robin Di mana tepatnya saya harus mencari itu? pom tampak baik-baik saja bagi saya<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target>
Gandalf StormCrow
Jika tidak ada <executable> yang ditentukan, maka ini bukanlah penyebab masalah Anda, kecuali pom yang Anda lihat mewarisi dari pom induk yang telah ditentukan.
Robin
Saat mendefinisikan executable, Anda juga harus menyetel <fork> menjadi true.
Robin
0

Anda perlu menunjukkan JAVA_HOMEdi mvn.ini(ada di folder Maven /bin), dan masalah Anda akan hilang.

Javicha
sumber
0

Jika Anda mengatur JAVA_HOME, dan masalah terus berlanjut, coba yang berikut ini.

(Saya memiliki masalah yang sama, pada PC yang baru dipasang.)

Dengan asumsi Anda menggunakan Eclipse.

  • Buka WindowPreferencesJavaInstalled jre's . Hapus semua yang Anda miliki di sana, tambahkan yang ingin Anda gunakan (JDK, no JRE!)
  • Di jendela yang sama, buka maven - instalasi, tambahkan instalasi Maven yang Anda unduh dan ekstrak di suatu tempat. ( Jangan gunakan instalasi Maven yang disematkan. Ini memiliki beberapa bug yang diketahui.)

Itu saja. Proyek Anda tidak akan mengalami masalah seperti itu.

Marcell
sumber
0

Saya mengalami kesalahan yang sama, karena versi JUnit . Saya memiliki tiga 3.8.1, dan saya telah berubah menjadi 4.8.1.

Jadi solusinya adalah:

Anda harus pergi ke POM , dan memastikan bahwa ketergantungan Anda terlihat seperti ini

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
Ibo
sumber
0

Saya mengubah konfigurasi maven-compiler-plugin untuk menambah executabledan forkdengan nilai true.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

Itu berhasil untuk saya.

Soumyajit Swain
sumber
0

Lakukan Echo %JAVA_HOME%dan kemudianmvn --version .

The JRE jalan harus sama ... kemudian pergi menu JendelaPreferencesJavaTerpasang JRE ini lokasi harus sama dengan apa yang Java_Homemenunjukkan.

vandana
sumber
0

Pergi ke dialog Properties dan klik kanan pada proyek.

Di Sumber daya tertaut , tambahkan jalur baru yang disebut JAVA_HOME dan letakkan di lokasi JDK Anda, seperti "C: \ Program Files \ Java \ jdk1.8.0_73".

Itu saja!!

Macu Gómez
sumber
Saya tidak berpikir Anda harus menambahkan variabel apa pun .. cukup ubah konfigurasi JDK di bawah Jalankan seetings ke ruang kerja JDK
Phani
0

Solusi untuk masalah ini sangat sederhana ...

Jika Anda tidak memiliki file build Ant, buatlah. Di Eclipse Anda dapat dengan mudah membuat file Ant .

Lihat link untuk membuat file build Ant [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

Sekarang ikuti langkah-langkah yang diberikan:

1) Tambahkan file build Ant Anda dalam tampilan Ant yang ada di jendela tampilan.

2) klik kanan pada file build Ant Anda dan pilih Run As dan opsi kedua di "Ant Build".

3) Sekarang kotak dialog akan terbuka dengan berbagai opsi dan tab.

4) Pilih tab JRE .

5) Anda akan melihat tiga tombol radio dan JRE atau JDK dipilih sebagai opsi.

6) Perhatikan baik-baik jika opsi tombol radio memilih JRE, lalu ubah ke JDK .

7) Klik terapkan.

Itu dia...!!!

Nishat Lakhani
sumber