Sau khi cài đặt Java JDK 7 cho Mac OS X - mvn -version vẫn hiển thị phiên bản java 1.6.0_31


117

Oracle đã phát hành Java JDK 7 vào ngày 26 tháng 4 cho Mac OS X. Tôi đã làm theo hướng dẫn cài đặt và khi thực hiện -version java trong cửa sổ đầu cuối, tôi nhận được:

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)

Tuy nhiên, khi tôi thực hiện mvn -versiontrong cửa sổ đầu cuối, tôi nhận được:

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"

Làm cách nào để giúp Maven sử dụng Java JDK 1.7.0_04?

Cảm ơn đã giúp đỡ.

Câu trả lời:


126

Cuối cùng đã tìm ra câu trả lời ở đây:

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

JAVA_HOME=$(/usr/libexec/java_home)Thay vào đó, bạn nên sử dụng trên máy Mac và sau đó đặt jdk hiện tại thông qua "Java Preferences.app".

Đặt JAVA_HOME trong ~ / .profile


4
Gần đây tôi đã cài đặt Java 6 và tôi không thể tìm thấy JavaPreferences.app bcz mac hiện không cung cấp hỗ trợ cho Java. Có thể cho tôi biết bây giờ tôi có thể đặt jvm của mình mà không sử dụng JavaPreferences như thế nào.
amod

2
Bạn có thể chấp nhận câu trả lời của riêng bạn. Điều đó sẽ cho tất cả chúng ta thấy rằng điều này đã giải quyết được vấn đề này. Và bạn sẽ có thêm 10 tư thế nữa :)
Ibolit

5
Tôi đã thêm vào ~ / .bash_profile: export JAVA_HOME = $ (/ usr / libexec / java_home)
skytteren 22/03/13

1
Hoặc bạn có thể thực hiện "export JAVA_HOME = $ (/ usr / libexec / java_home -v 1.6)" trong một lần thay vì thay đổi bằng Java Preferences.app
mac

không thể mở Ứng dụng Tùy chọn Java trong El Captian, tôi đã chuyển từ Tùy chọn Hệ thống -> Java.
Wolf7176,

34

Vấn đề là liên kết tượng trưng "CurrentJDK" bên trong các phiên bản của JavaVm.framework trỏ đến jdk cũ, vì vậy khi tôi sử dụng các lệnh sau để đặt CurrentJDK thành phiên bản mới nhất (1.7.0_45) thì nó hoạt động

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

tham khảo: http://java.dzone.com/articles/installing-jdk-7-mac-os-x


hãy chắc chắn rằng bạn chỉ định phiên bản phù hợp với jdk1.7.0_45.jdk, tôi làjdk1.7.0_51.jdk
ndequeker

1
Tôi tự hỏi tại sao các nhà phát triển Oracle không làm điều đó tự động? Nó không phải là tầm thường đối với tôi. Câu trả lời này đã cứu ngày của tôi.
Ivan Voroshilin

Điều này không làm việc cho tôi. Tôi đang ở trên el captian. phiên bản java mvn từ chối thay đổi. JAVA_HOME là chính xác
Wolf7176,

17

Để tìm đường dẫn từ Java Preferences, hãy thử /usr/libexec/java_home -X

Mục nhập Java7 của tôi trông như thế này:

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

6
grrrrr, tôi đã làm điều đó và đường dẫn mà nó liệt kê cho jdk1.7 của tôi hoàn toàn không tồn tại :(
Dean Hiller.

9

Bạn cần thay đổi JAVA_HOMEbiến môi trường thành vị trí JDK 1.7 mới.

Xem câu hỏi này để biết các vị trí có thể có mà JAVA_HOME có thể được xác định. Trong một thiết bị đầu cuối, hãy nhập which javađể tìm đường dẫn cài đặt Java của bạn, sau đó cập nhật JAVA_HOMEđể trỏ đến đường dẫn đó (nhưng loại trừ thư mục thùng rác).


Bạn có chắc tôi cần điều đó trên Mac OS X không? Tôi đã không phải làm điều đó trong quá khứ. Nếu tôi cần thiết lập JAVA_HOME, làm cách nào để biết đường dẫn nào được sử dụng vì quá trình cài đặt Java JDK 7 không cung cấp cho tôi bất kỳ thông tin đường dẫn cài đặt nào và ứng dụng tiện ích Java Preference trên máy Mac không hiển thị đường dẫn đến JDK 1.7
Bruce Phillips

Nếu bạn nhìn vào câu hỏi của mình ở trên, bạn có thể thấy rằng JAVA_HOME đã được xác định và hiện trỏ đến JDK 1.6 cũ. Tôi không quen với cách thay đổi các biến môi trường trong OSX, nhưng đây là những gì Maven sử dụng theo mặc định.
Nate

Vấn đề là bản cập nhật của Apple thường cập nhật phiên bản java và đặt giá trị JAVA_HOME. Việc đặt giá trị JAVA_HOME trong .bashrc không hoạt động trên OS X như trong linux. Ngoài ra, tôi không thể tìm thấy đường dẫn đến JDK 7 được cài đặt bởi Oracle ở đâu.
Bruce Phillips

Ngoài ra Nate câu hỏi của tôi KHÔNG trùng lặp với bài đăng mà bạn đã liên kết. Tôi đang sử dụng OS X và đã cập nhật lên Java JDK 7 bằng cách sử dụng cài đặt Oracle cho Mac OS X, vừa được phát hành vào ngày 26 tháng 4.
Bruce Phillips

Không Mac thay vì sử dụng .bashrc .bash_profile và bạn sẽ có thể tìm instalation dưới / System / Library / Java / JavaVirtualMachines / nơi bạn cần đến thời điểm trên mới 1.7.0 phiên bản Java của bạn
peter_budo

7

Trong trường hợp bất kỳ ai đang cài đặt Maven trên máy Mac 64-bit chạy Mac OSX 'Mavericks', hãy tiết kiệm cho mình chút thời gian và công sức cố gắng cài đặt Maven. Tôi đã cố gắng làm theo điều này (không thành công vì vị trí của java_home đã thay đổi trên Mavericks:

http://maven.apache.org/download.cgi

Tôi đang nhổ tóc cho đến khi tôi tìm thấy trang web này, trang web khuyên bạn nên cài đặt homebrew và làm theo hướng dẫn trên trang này: http://techspunky.blogspot.in/2013/10/how-to-install-maven-on-mac -osx-109.html

sau khi hoàn tất, đừng hoảng sợ khi $ maven -version không hoạt động, thay vào đó hãy sử dụng $ mvn --version như maven.apache.org/download.cgi được khuyến nghị.

Nó hoạt động, nhưng sau đó tôi nhận thấy Java SDK Maven đang sử dụng là phiên bản Java: 1.6.0_65, đây không phải là SDK mới nhất mà tôi đã cài đặt trên hệ thống.

Sau khi tôi đặt JAVA_HOME =/usr/libexec/java_home

Nó đang sử dụng đúng SDK: Maven home: /usr/local/Cellar/maven/3.1.1/libexec Phiên bản Java: 1.7.0_45, nhà cung cấp: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_45. jdk / Contents / Home / jre Ngôn ngữ mặc định: en_US, mã hóa nền tảng: UTF-8 Tên hệ điều hành: "mac os x", phiên bản: "10.9", Arch: "x86_64", family: "mac"

Sự thành công! nhưng chờ đã ... lần sau tôi mở thiết bị đầu cuối và chạy mvn -v nó đã quay trở lại phiên bản java 1.6. THẬT!

một số loại lỗi được cho là của nó từ những gì tôi đọc được sử dụng: echo JAVA_HOME = /usr/libexec/java_home -v 1.7| sudo tee -a / etc / mavenrc

và bây giờ:

Trang chủ Maven: /usr/local/Cellar/maven/3.1.1/libexec Phiên bản Java: 1.7.0_45, nhà cung cấp: Oracle Corporation Trang chủ Java: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre Ngôn ngữ mặc định: en_US, mã hóa nền tảng: UTF-8 Tên hệ điều hành: "mac os x", phiên bản: "10.9", Arch: "x86_64", họ: "mac"


export JAVA_HOME=`/usr/libexec/java_home`hoạt động tốt để tôi lấy var JAVA_HOME được xuất chính xác.
cdeszaq

4

Lý do Maven vẫn sử dụng Java 6 là tập lệnh / usr / bin / mvn khởi chạy nó không sử dụng đúng phương thức OS / X để phân giải phiên bản Java hiện tại như được chỉ định trong Tùy chọn Java. Xem sự cố Maven này để biết chi tiết:

http://jira.codehaus.org/browse/MNG-4226

Bỏ phiếu cho nó có thể sửa nó; trong thời gian chờ đợi, nếu bạn thay đổi tập lệnh / usr / bin / mvn như được hiển thị trong nhận xét & bản vá về vấn đề đó, bạn sẽ nhận được kết quả mong muốn.


2

Ok trên máy của tôi. Vâng, trình cài đặt Oracle đã không thực hiện chính xác công việc của nó và nó khiến tôi bối rối không biết cuối cùng sau khi 1.6 vẫn đang chạy.

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)

nhưng SDK HOME thực sự là một liên kết sim vẫn trỏ đến 1.6

/Library/Java/Home trong công cụ tìm GetInfo trỏ đến /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

trong nhà ga

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

Đi tìm hình.

Tôi đã tìm thấy 1.7 ở đây và tôi đang sử dụng nó để xây dựng với: /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home


0

Tôi nghĩ rằng vấn đề nằm một phần ở cơ chế khởi chạy java. Tôi đã có thể làm cho Eclipse chạy mã của tôi trong Java7, nhưng tôi nghĩ bản thân eclipse vẫn đang chạy trong Java6. Ngoài ra, tôi có một chương trình java được biên dịch lần cuối cách đây một năm và được xây dựng bằng cách sử dụng jarbundler-2.1.0.jar (với tùy chọn jvmversion = "1.6+"). Khi tôi nhấp đúp vào tệp .app, nó chạy Java6, nhưng khi tôi nhấp đúp vào tệp .jar bên trong .app thì nó chạy Java7.

Ngoài ra, tôi không sử dụng JAVA_HOME, nhưng tôi vẫn nhận được đúng phiên bản java "1.7.0_04" được hiển thị trong câu hỏi. JAVA_HOME dường như là một con cá trích đỏ. Có thể Maven cần nó, nhưng Eclipse dường như không sử dụng nó và cũng không khởi chạy các tệp jar.

Và sau khi thiết lập Java7 trong công cụ Java Preferences, nó dường như không ảnh hưởng đến việc khởi chạy các tệp java .app. Tuy nhiên, nó làm cho 'java -version' từ thiết bị đầu cuối hoạt động tốt. Tôi đã thử bỏ chọn mọi thứ nhưng tùy chọn Java7 và sau đó Eclipse sẽ không chạy.


0

Nếu JAVA_HOME của bạn được đặt tại bash của người dùng cục bộ, mvn sẽ chọn phiên bản java hiện tại của hệ thống cho dù bạn đã đặt JAVA_HOME nào.

Do đó, trước tiên hãy chạy lệnh ' which mvn ' và kiểm tra xem bạn đang sử dụng mvn thực thi nào. Sau đó, chỉnh sửa tệp mvn đóthay đổi biến JAVA_HOME thành nhà java ưa thích của bạn.

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.