Setelah Menginstal Java JDK 7 Untuk Mac OS X - mvn -version masih menampilkan java versi 1.6.0_31

117

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

Bruce Phillips
sumber

Jawaban:

126

Akhirnya menemukan jawabannya di sini:

http://www.adam-bien.com/roller/abien/entry/java_se_development_kit_7

Anda harus menggunakan JAVA_HOME=$(/usr/libexec/java_home)sebagai gantinya di Mac dan kemudian mengatur jdk saat ini melalui "Preferensi Java.app".

Setel JAVA_HOME di ~ / .profile

Bruce Phillips
sumber
4
Saya baru saja menginstal Java 6 dan saya tidak dapat menemukan JavaPreferences.app bcz mac sekarang tidak menyediakan dukungan untuk Java. Bisa beri tahu saya sekarang bagaimana cara menyetel jvm saya tanpa menggunakan JavaPreferences.
amod
2
Anda bisa menerima jawaban Anda sendiri. Itu akan menunjukkan kepada kita semua bahwa ini menyelesaikan masalah ini. Dan Anda akan memiliki 10
pont
5
Saya menambahkan ke ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren
1
Atau Anda dapat melakukan "ekspor JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" dalam satu kesempatan alih-alih mengubah menggunakan Java Preferences.app
mac
tidak dapat membuka Aplikasi Preferensi Java di El Captian, saya pergi dari System Preferences -> Java.
Wolf7176
34

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

cd /System/Library/Frameworks/JavaVM.framework/Versions
sudo rm CurrentJDK
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents CurrentJDK

referensi: http://java.dzone.com/articles/installing-jdk-7-mac-os-x

Mahmoud Adam
sumber
pastikan Anda menentukan versi yang tepat jdk1.7.0_45.jdk, milik saya adalahjdk1.7.0_51.jdk
ndequeker
1
Saya bertanya-tanya mengapa pengembang Oracle tidak melakukannya secara otomatis? Itu tidak sepele bagiku. Jawaban ini menyelamatkan hari saya.
Ivan Voroshilin
ini tidak berhasil untuk saya. Saya di el captian. versi mvn java menolak untuk berubah. JAVA_HOME akurat
Wolf7176
17

Untuk menemukan jalur dari Preferensi Java, coba /usr/libexec/java_home -X

Entri Java7 saya terlihat seperti ini:

<dict>
    <key>JVMArch</key>
    <string>x86_64</string>
    <key>JVMBundleID</key>
    <string>com.oracle.java.7u04.jdk</string>
    <key>JVMEnabled</key>
    <true/>
    <key>JVMHomePath</key>
    <string>/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home</string>
    <key>JVMIsBuiltIn</key>
    <false/>
    <key>JVMName</key>
    <string>Java SE 7</string>
    <key>JVMPlatformVersion</key>
    <string>1.7</string>
    <key>JVMVendor</key>
    <string>Oracle Corporation</string>
    <key>JVMVersion</key>
    <string>1.7.0_04</string>
</dict>
dmolony
sumber
6
grrrrr, saya melakukan itu dan jalur yang dicantumkan untuk jdk1.7 saya tidak ada sama sekali :(
Dean Hiller
9

Anda perlu mengubah JAVA_HOMEvariabel lingkungan ke lokasi JDK 1.7 yang baru.

Lihat pertanyaan ini untuk kemungkinan lokasi tempat JAVA_HOME dapat ditentukan. Di terminal, ketik which javauntuk menemukan jalur penginstalan Java Anda, dan kemudian perbarui JAVA_HOMEuntuk menunjuk ke jalur itu (tetapi kecualikan folder bin tambahan).

Nate
sumber
Apakah Anda yakin saya memerlukannya di Mac OS X? Saya tidak pernah melakukan itu di masa lalu. Jika saya memang perlu mengatur JAVA_HOME, bagaimana saya tahu jalur apa yang akan digunakan karena pemasangan Java JDK 7 tidak memberi saya informasi jalur pemasangan dan aplikasi utilitas Preferensi Java di Mac tidak menunjukkan jalur ke JDK 1.7
Bruce Phillips
Jika Anda melihat pertanyaan Anda di atas, Anda dapat melihat bahwa JAVA_HOME telah ditentukan dan saat ini mengarah ke 1.6 JDK yang lama. Saya tidak terbiasa dengan cara mengubah variabel lingkungan di OSX, tetapi inilah yang digunakan Maven secara default.
Nate
Masalahnya adalah bahwa pembaruan Apple biasanya memperbarui versi java dan menetapkan nilai JAVA_HOME. Menyetel nilai JAVA_HOME di .bashrc tidak berfungsi di OS X seperti di linux. Juga tidak ada di mana saya dapat menemukan jalur ke JDK 7 yang diinstal oleh Oracle.
Bruce Phillips
Juga Nate, pertanyaan saya BUKAN duplikat dari posting yang Anda tautkan. Saya menggunakan OS X dan telah memperbarui ke Java JDK 7 menggunakan penginstalan Oracle untuk Mac OS X, yang baru saja dirilis pada 26 April.
Bruce Phillips
Tidak ada Mac selain .bashrc yang menggunakan .bash_profile dan Anda seharusnya dapat menemukan penginstalan di bawah / System / Library / Java / JavaVirtualMachines / di mana Anda perlu menunjukkan versi Java 1.7.0 yang baru
peter_budo
7

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

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

ConfusedDeer
sumber
export JAVA_HOME=`/usr/libexec/java_home`bekerja dengan baik bagi saya untuk mengekspor var JAVA_HOME dengan benar.
cdeszaq
4

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.

Robert Elliot
sumber
2

Ok di mesin saya. Ya, penginstal Oracle tidak benar-benar melakukan tugasnya, dan itu membingungkan saya sampai akhir setelah 1.6 masih berjalan.

java run time was updated 

java -version
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

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

./Home -> /System/Library/Frameworks/JavaVM.framework/Home

Sosok pergi.

Saya menemukan 1,7 di sini dan saya menggunakannya untuk membangun dengan: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home

dave
sumber
0

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.

dmolony
sumber
0

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.

Ankit Bhatnagar
sumber