Oracle merilis Java JDK 7 pada 26 April untuk Mac OS X. Saya mengikuti petunjuk instalasi dan ketika saya melakukan java -version di jendela terminal saya mendapatkan:
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
Namun ketika saya melakukannya mvn -version
di jendela terminal saya mendapatkan:
Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600)
Java version: 1.6.0_31, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.7.3", arch: "x86_64", family: "mac"
Bagaimana caranya agar Maven menggunakan Java JDK 1.7.0_04?
Terima kasih untuk bantuannya.
Masalahnya adalah bahwa tautan simbolis "CurrentJDK" di dalam versi JavaVm.framework menunjuk ke jdk lama, jadi ketika saya menggunakan perintah berikut untuk menyetel CurrentJDK ke yang terbaru (1.7.0_45) itu berfungsi
referensi: http://java.dzone.com/articles/installing-jdk-7-mac-os-x
sumber
jdk1.7.0_45.jdk
, milik saya adalahjdk1.7.0_51.jdk
Untuk menemukan jalur dari Preferensi Java, coba
/usr/libexec/java_home -X
Entri Java7 saya terlihat seperti ini:
sumber
Anda perlu mengubah
JAVA_HOME
variabel lingkungan ke lokasi JDK 1.7 yang baru.Lihat pertanyaan ini untuk kemungkinan lokasi tempat JAVA_HOME dapat ditentukan. Di terminal, ketik
which java
untuk menemukan jalur penginstalan Java Anda, dan kemudian perbaruiJAVA_HOME
untuk menunjuk ke jalur itu (tetapi kecualikan folder bin tambahan).sumber
Seandainya ada yang menginstal Maven pada Mac 64-bit yang menjalankan Mac OSX 'Mavericks', hemat waktu Anda dan mencoba menginstal Maven. Saya mencoba mengikuti ini (yang gagal karena lokasi java_home telah berubah di Mavericks:
http://maven.apache.org/download.cgi
Saya menarik rambut saya sampai saya menemukan situs web ini, yang merekomendasikan Anda Instal homebrew dan ikuti petunjuk di halaman ini: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html
setelah selesai jangan panik ketika $ maven -version tidak berfungsi, sebagai gantinya gunakan $ mvn --version seperti yang disarankan maven.apache.org/download.cgi.
Ini berhasil, tetapi kemudian saya perhatikan Java SDK yang digunakan Maven adalah versi Java: 1.6.0_65, yang bukan SDK terbaru yang saya instal pada sistem.
Setelah saya mengatur JAVA_HOME =
/usr/libexec/java_home
Itu menggunakan SDK yang benar: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Versi Java: 1.7.0_45, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Isi / Beranda / jre Lokal default: en_US, pengkodean platform: UTF-8 Nama OS: "mac os x", versi: "10.9", arch: "x86_64", keluarga: "mac"
Keberhasilan! tapi tunggu ... lain kali saya membuka terminal dan menjalankan mvn -v kembali ke java versi 1.6. WTH!
itu semacam bug yang seharusnya dari apa yang saya baca gunakan: echo JAVA_HOME =
/usr/libexec/java_home -v 1.7
| sudo tee -a / etc / mavenrcdan sekarang:
Maven home: /usr/local/Cellar/maven/3.1.1/libexec Versi Java: 1.7.0_45, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Lokal default: en_US, encoding platform: UTF-8 Nama OS: "mac os x", versi: "10.9", arch: "x86_64", family: "mac"
sumber
export JAVA_HOME=`/usr/libexec/java_home`
bekerja dengan baik bagi saya untuk mengekspor var JAVA_HOME dengan benar.Alasan Maven masih menggunakan Java 6 adalah karena skrip / usr / bin / mvn yang meluncurkannya tidak menggunakan metode OS / X yang benar untuk menyelesaikan versi Java saat ini seperti yang ditentukan dalam Preferensi Java. Lihat masalah Maven ini untuk detailnya:
http://jira.codehaus.org/browse/MNG-4226
Memberi suara mungkin akan memperbaikinya; Sementara itu, jika Anda mengubah skrip / usr / bin / mvn seperti yang ditunjukkan pada komentar & tambalan tentang masalah itu, Anda akan mendapatkan hasil yang diinginkan.
sumber
Ok di mesin saya. Ya, penginstal Oracle tidak benar-benar melakukan tugasnya, dan itu membingungkan saya sampai akhir setelah 1.6 masih berjalan.
tetapi SDK HOME sebenarnya adalah tautan sim yang masih mengarah ke 1.6
/Library/Java/Home
di penemu GetInfo menunjuk ke/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
di Terminal
Sosok pergi.
Saya menemukan 1,7 di sini dan saya menggunakannya untuk membangun dengan:
/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
sumber
Saya pikir masalahnya sebagian terletak pada mekanisme peluncuran java. Saya bisa mendapatkan Eclipse untuk menjalankan kode saya di bawah Java7, tapi menurut saya eclipse sendiri masih berjalan di bawah Java6. Juga, saya memiliki program java yang terakhir dikompilasi setahun yang lalu, dan dibuat menggunakan jarbundler-2.1.0.jar (dengan opsi jvmversion = "1.6+"). Ketika saya mengklik dua kali file .app itu menjalankan Java6, tetapi ketika saya mengklik dua kali file .jar di dalam .app itu menjalankan Java7.
Selain itu, saya tidak menggunakan JAVA_HOME, tetapi saya masih mendapatkan versi java yang benar "1.7.0_04" yang ditunjukkan dalam pertanyaan. JAVA_HOME tampaknya seperti ikan haring merah. Mungkin Maven membutuhkannya, tetapi Eclipse sepertinya tidak menggunakannya, dan juga tidak meluncurkan file jar.
Dan setelah mengatur Java7 di alat Preferensi Java, tampaknya tidak memengaruhi peluncuran file java .app. Namun itu membuat 'java -version' dari terminal bekerja dengan baik. Saya mencoba menghapus centang semuanya kecuali opsi Java7, dan kemudian Eclipse tidak akan berjalan sama sekali.
sumber
Jika JAVA_HOME Anda terletak di bash pengguna lokal, mvn akan memilih versi java sistem saat ini, apa pun JAVA_HOME yang Anda tetapkan.
Oleh karena itu pertama-tama jalankan perintah ' which mvn ' dan periksa mvn mana yang dapat dieksekusi yang Anda gunakan. Setelah itu edit file mvn itu dan ubah variabel JAVA_HOME ke java home pilihan Anda.
sumber