Có bất kỳ lệnh linux nào tôi có thể sử dụng để tìm ra thư mục JAVA_HOME
không? Tôi đã thử in ra các biến môi trường ("env") nhưng tôi không thể tìm thấy thư mục.Thư mục JAVA_HOME trong Linux
Trả lời
echo $JAVA_HOME
sẽ in giá trị nếu được đặt. Tuy nhiên, nếu bạn không đặt nó theo cách thủ công trong các tập lệnh khởi động, có thể nó không được đặt.
Nếu bạn thử which java
và không tìm thấy gì, Java có thể không được cài đặt trên máy của bạn hoặc ít nhất không nằm trong đường dẫn của bạn. Tùy thuộc vào phân phối Linux nào bạn có và cho dù bạn có quyền truy cập root hay không, bạn có thể truy cập http://www.java.com để tải xuống phiên bản bạn cần. Sau đó, bạn có thể đặt JAVA_HOME để trỏ đến thư mục này. Hãy nhớ rằng, đây chỉ là một quy ước và không nên được sử dụng để xác định xem java có được cài đặt hay không.
Trên lệnh, gõ:
echo "$ JAVA_HOME"
Nếu bạn không nhận được bất cứ điều gì, sau đó biến môi trường JAVA_HOME của bạn chưa được thiết lập. Bạn có thể thử sử dụng "định vị java" để thử và khám phá nơi cài đặt Java của bạn.
Bạn có đặt JAVA_HOME bạn
- Korn và bash shell: xuất khẩu JAVA_HOME = jdk-cài đặt-dir
- Bourne shell: JAVA_HOME = jdk-cài đặt-dir; xuất khẩu JAVA_HOME
- C shell: setenv JAVA_HOME jdk-cài đặt-dir
Bạn có thiếu dấu chấm phẩy ở đó không? –
cố định, nhờ Tom –
tôi biết đây là muộn, nhưng lệnh này tìm kiếm thư mục/usr/thư mục để tìm java cho bạn
sudo find /usr/ -name *jdk
Kết quả đến
/usr/lib/jvm/java-6-openjdk
/usr/lib/jvm/java-1.6.0-openjdk
FYI, nếu bạn đang ở trên một máy Mac, hiện JAVA_HOME tọa lạc tại
/System/Library/Frameworks/JavaVM.framework/Home
Đã phải sử dụng sudo find/-name * javac để tìm oracle VM Tôi đã cài đặt – bulltorious
Bạn có thể muốn thử sudo find/usr/-name * jdk * 'như con đường của tôi là '/ usr/lib/jvm/java-7-openjdk-amd64 /'. – JVE999
Trên Linux bạn có thể chạy $(dirname $(dirname $(readlink -f $(which javac))))
Trên Mac bạn có thể chạy $(dirname $(readlink $(which javac)))/java_home
Tôi không chắc chắn về các cửa sổ nhưng tôi tưởng tượng where javac
sẽ giúp bạn có khá gần
Đây là một giải pháp tuyệt vời, nhưng hãy nhớ sử dụng cờ chuẩn cho readlink vì Java có thể được thiết lập với nhiều liên kết, vì vậy hãy sử dụng '$ (dirname $ (dirname $ (readlink -f $ (which javac))))' on Linux thay vì –
Cảm ơn @ MatthewO'Riordan! Tôi đã thêm cờ '-f' cho lệnh linux. Lưu ý rằng 'readlink' trên mac không phải là phiên bản' GNU' vì vậy tôi đã loại trừ '-f' cho phiên bản mac của tập lệnh. Người dùng Mac có phiên bản 'GNU' của' readlink' được cài đặt thông qua brew có thể sử dụng '-f'. – jsdevel
Điều này đặc biệt tốt cho những người sử dụng/etc/alternative để quản lý các phiên bản java khác nhau. – gilbertpilz
Để hiển thị giá trị của một biến môi trường bạn sử dụng:
echo $ BIẾN
như vậy trong bạn trường hợp sẽ là:
echo $ JAVA_HOME
Trong trường hợp bạn không có nó setted, bạn có thể thêm vào .bashrc
tập tin của bạn:
xuất khẩu JAVA_HOME = $ (readlink -f/usr/bin/java | sed "s: bin/java ::")
và nó sẽ tự động thay đổi khi bạn cập nhật gói của mình.
hoạt động tốt trên Fedora và Ubuntu –
Lệnh sed không an toàn: nếu/usr/bin/java là liên kết tượng trưng với '/ usr/bin/java-8/bin/java' thì sao? Bạn sẽ nhận được đầu ra '/ usr/-8/bin/java'. – GKFX
Giải pháp tuyệt vời! nếu bạn muốn sử dụng jdk như nhà thay vì jre chỉ cần chỉnh sửa readlink -f/usr/bin/java | sed "s: jre/bin/java ::" – cyberoblivion
http://www.gnu.org/software/sed/manual/html_node/Print-bash-environment.html#Print-bash-environment
Nếu bạn thực sự muốn có được một số thông tin về BASH bạn đưa kịch bản mà trong .bashrc của bạn và xem nó trôi qua. Bạn có thể cuộn xung quanh và nhìn nó qua.
Nếu $JAVA_HOME
được định nghĩa trong môi trường của bạn ...
$ echo $JAVA_HOME
$ # I am not lucky...
Bạn có thể đoán nó từ các lớp được nạp.
$ java -showversion -verbose 2>&1 | head -1
[Opened /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/lib/rt.jar]
Phương pháp này đảm bảo bạn tìm ra đúng jdk
/jre
sử dụng trong trường hợp có nhiều bản cài đặt.
Hoặc sử dụng strace
:
$ strace -e open java -showversion 2>&1 | grep -m1 /jre/
open("/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64/jre/bin/../lib/amd64/jli/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
Chỉ cần một giải pháp, nền tảng của cái này (sử dụng java
), và chỉ bạn đến vị trí của jre.
java -XshowSettings:properties -version 2>&1 > /dev/null | grep 'java.home'
đầu ra tất cả các thiết lập hiện java
's, và tìm thấy một gọi java.home
.
Tôi đã nghiên cứu rất nhiều cách để tìm JAVA_HOME và tôi nghĩ đây là một trong những cách tốt nhất! Cảm ơn bạn đã đề cập đến nó! – ricovox
Rất vui được! –
Nó có thể đáng nói đến là điều này bắt đầu làm việc với JDK1.7 (IIRC). Trước đó bạn sẽ cần phải gọi: 'jrunscript -e 'java.lang.System.out.println (java.lang.System.getProperty (" java.home "));''. Trong cả hai trường hợp, đối với các khía cạnh 'nền tảng chéo', bạn nên thêm một '/ usr/bin/env'. – Moreaki
Dưới đây là một sự cải tiến, grabbing chỉ thư mục để stdout:
java -XshowSettings:properties -version 2>&1 \
| sed '/^[[:space:]]*java\.home/!d;s/^[[:space:]]*java\.home[[:space:]]*=[[:space:]]*//'
Một chút ngắn hơn, mặc dù với ba nhánh thay vì hai, như sau: ': $ {JAVA_HOME: = $ (/ usr/bin/env java -XshowSettings: thuộc tính -version 2> & 1 | grep" java.home "| cut -d "=" -f2)} ' – Moreaki
Nếu cần xuất trực tiếp đường dẫn:' xuất $ (/ usr/bin/env java -XshowSettings: thuộc tính -version 2> & 1 | grep "java.home" | sed -e 's/java.home/JAVA_HOME /; s/// g;') ' – Moreaki
- 1. Nhận thư mục chính trong Linux, C++
- 2. Tới vài thư mục trong linux
- 3. Linux/opt/* thư mục và quyền
- 4. Hiểu về quyền hạn thư mục Linux
- 5. Redhat Linux - đổi màu thư mục
- 6. thư mục tmp trong Windows giống như/tmp trong Linux
- 7. Việc đặt các jars bên ngoài vào thư mục JAVA_HOME/lib/ext là một điều xấu?
- 8. Nơi đặt thư mục lưu trữ SVN trong Linux?
- 9. Cách liệt kê các thư mục trống trong linux
- 10. Danh sách thư mục một phần trong linux
- 11. Lệnh tar của Linux: nén thư mục nhưng trừ các thư mục con
- 12. Thư mục Zip đệ quy, lưu cho một thư mục con đã cho (Linux)
- 13. Nutch-Cygwin Cách đặt JAVA_HOME
- 14. $ ant {} java.home điểm đến $ JAVA_HOME/jre, không $ JAVA_HOME
- 15. Đặt quyền mặc định cho các tệp và thư mục con mới được tạo trong thư mục trong Linux?
- 16. Sự khác nhau giữa JAVA_HOME và JRE_HOME
- 17. giám sát tệp và truy cập thư mục trên linux
- 18. Linux đệ quy chmod chỉ trên các thư mục con
- 19. Lệnh Linux để di chuyển một thư mục
- 20. Linux: Chỉ đặt quyền cho các thư mục
- 21. Maven, JAVA_HOME w/OS X
- 22. Vị trí thư mục Linux/Ubuntu ~/.vim/syntax/
- 23. CMake với "tiêu chuẩn" bố trí thư mục (Linux)
- 24. Grep loại trừ thư mục và tìm kiếm bằng linux
- 25. Cách tạo thư mục trong thư mục chính?
- 26. linux bash - xóa tất cả các tệp nằm trong một thư mục từ một thư mục khác
- 27. Tomcat 6 JAVA_HOME
- 28. java web start JAVA_HOME
- 29. JAVA_HOME và java -version
- 30. Thiết lập classpath java và JAVA_HOME đúng trong Ubuntu
JAVA_HOME không còn được định nghĩa trong các hệ thống Linux và bị phản đối. –
@PeterQuiring bạn nên trích dẫn nguồn của bạn cho tuyên bố đó .. bạn khá sai. – harschware
@harschware Khi tôi cài đặt Ubuntu, JAVA_HOME chưa được cài đặt, ngay cả khi đã cài đặt JDK. Cũng đọc/usr/share/doc/openjdk-8-jre-headless/JAVA_HOME và nó nói rằng JAVA_HOME không còn cần thiết nữa (kế thừa). –