it-swarm-vi.com

Làm cách nào để tìm nơi JDK được cài đặt trên máy windows của tôi?

Tôi cần biết JDK nằm ở đâu trên máy của tôi.

Khi chạy Java -version trong cmd, nó hiển thị phiên bản là '1.6.xx'. Để tìm vị trí của SDK này trên máy của tôi, tôi đã thử sử dụng echo %Java_HOME% nhưng nó chỉ hiển thị 'Java_HOME' (vì không có var 'Java_PATH' trong các biến môi trường của tôi).

271
Ashine

Nếu bạn đang sử dụng Linux/Unix/Mac OS X:

Thử đi:

$ which Java

Nên xuất vị trí chính xác.

Sau đó, bạn có thể tự đặt biến môi trường Java_HOME.

Trong máy tính của tôi (Mac OS X - Snow Leopard):

$ which Java
/usr/bin/Java
$ ls -l /usr/bin/Java
lrwxr-xr-x  1 root  wheel  74 Nov  7 07:59 /usr/bin/Java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java

Nếu bạn đang sử dụng Windows:

c:\> for %i in (Java.exe) do @echo.   %~$PATH:i
286
Pablo Santa Cruz

Windows> Bắt đầu> cmd>

C:> for %i in (javac.exe) do @echo.   %~$PATH:i

Nếu bạn đã cài đặt JDK, Đường dẫn được hiển thị,
[.__.] Ví dụ: C:\Program Files\Java\jdk1.6.0_30\bin\javac.exe

101
grokster

Trong Windows tại lệnh Nhắc

where javac

83
NanoBennett

Trong cửa sổ, mặc định là: C:\Program Files\Java\jdk1.6.0_14 (trong đó các số có thể khác nhau, vì chúng là phiên bản).

26
Ronen Rabinovici

Trình cài đặt Java đặt một số tệp vào thư mục% WinDir%\System32 (Java.exe, javaws.exe và một số tệp khác). Khi bạn nhập Java.exe trong dòng lệnh hoặc tạo quy trình mà không có đường dẫn đầy đủ, Windows sẽ chạy chúng như là phương sách cuối cùng nếu chúng bị thiếu trong các thư mục% PATH%.

Bạn có thể tra cứu tất cả các phiên bản Java được cài đặt trong registry. Hãy xem HKLM\SOFTWARE\JavaSoft\Java Runtime Môi trường và HKLM\SOFTWARE\Wow6432Node\JavaSoft\Java Runtime Môi trường cho Java 32 bit trên Windows 64 bit.

Đây là cách Java tự tìm ra các phiên bản khác nhau được cài đặt. Và đây là lý do tại sao cả phiên bản 32 bit và 64 bit có thể cùng tồn tại và hoạt động tốt mà không bị can thiệp.

26
Denis The Menace

Đơn giản và đơn giản trên nền tảng Windows:

nơi Java

21
luccaa

Tập lệnh bó bên dưới sẽ in ra JRE mặc định hiện có. Có thể dễ dàng sửa đổi để tìm phiên bản JDK được cài đặt bằng cách thay thế Môi trường chạy thi hành Java bằng Bộ công cụ phát triển Java.

@echo off

setlocal

::- Get the Java Version
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set VALUE=CurrentVersion
reg query %KEY% /v %VALUE% 2>nul || (
    echo JRE not installed 
    exit /b 1
)
set JRE_VERSION=
for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do (
    set JRE_VERSION=%%b
)

echo JRE VERSION: %JRE_VERSION%

::- Get the JavaHome
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\%JRE_VERSION%"
set VALUE=JavaHome
reg query %KEY% /v %VALUE% 2>nul || (
    echo JavaHome not installed
    exit /b 1
)

set JAVAHOME=
for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do (
    set JAVAHOME=%%b
)

echo JavaHome: %JAVAHOME%

endlocal
15
munsingh

Trên Windows 10, bạn có thể tìm ra đường dẫn bằng cách vào Bảng điều khiển> Java. Trong bảng điều khiển hiển thị, bạn có thể tìm thấy đường dẫn như được minh họa trong ảnh chụp màn hình bên dưới. Trong Bảng điều khiển Java, đi tới tab 'Java' và sau đó nhấp vào nút 'Xem' bên dưới mô tả 'Xem và quản lý các phiên bản và cài đặt Java Runtime cho các ứng dụng và ứng dụng Java.'

Điều này sẽ hoạt động trên Windows 7 và có thể các phiên bản Windows gần đây khác.

enter image description here

12
smartexpert

Trong lệnh Windows Prompt, chỉ cần gõ:

set Java_home

Hoặc, nếu bạn không thích môi trường lệnh, bạn có thể kiểm tra nó từ:

Menu bắt đầu> Máy tính> Thuộc tính hệ thống> Thuộc tính hệ thống nâng cao. Sau đó mở tab Nâng cao> Biến môi trường và trong biến hệ thống, hãy thử tìm Java_HOME.

enter image description here

12
AndroidDev

Thông tin thêm về Windows ... biến Java.home không phải lúc nào cũng có cùng vị trí với nhị phân được chạy.

Như Denis The Menace nói, trình cài đặt đặt các tệp Java vào Tệp chương trình, nhưng cũng Java.exe thành System32. Không có gì liên quan đến Java trên đường dẫn Java -version vẫn có thể hoạt động. Tuy nhiên, khi chương trình của PeterMmm được chạy, nó báo cáo giá trị của Tệp chương trìnhJava.home, điều này không sai (Java được cài đặt ở đó) nhưng thực tế đang chạy nhị phân trong Hệ thống 32.

Một cách để tìm kiếm vị trí của nhị phân Java.exe, thêm dòng sau vào mã của PeterMmm để giữ cho chương trình chạy lâu hơn:

try{Thread.sleep(60000);}catch(Exception e) {}

Biên dịch và chạy nó, sau đó tìm kiếm vị trí của hình ảnh Java.exe. Ví dụ. trong Windows 7 mở trình quản lý tác vụ, tìm mục nhập Java.exe, nhấp chuột phải và chọn 'vị trí tệp mở', điều này sẽ mở vị trí chính xác của tệp nhị phân Java. Trong trường hợp này, nó sẽ là System32.

10
Moika Turns

Trong Windows, bạn có thể sử dụng

C:>dir /b /s Java.exe

để in đường dẫn đầy đủ của mỗi "Java.exe" trên ổ C: của bạn, bất kể chúng có nằm trên biến môi trường PATH của bạn hay không.

9
Thomas Bender

Chạy chương trình này từ dòng lệnh:

// File: Main.Java
public class Main {

    public static void main(String[] args) {
       System.out.println(System.getProperty("Java.home"));
    }

}


$ javac Main.Java
$ Java Main
9
PeterMmm

Powershell một lớp lót:

$p='HKLM:\SOFTWARE\JavaSoft\Java Development Kit'; $v=(gp $p).CurrentVersion; (gp $p/$v).JavaHome
8
majkinetor

Bạn đã thử nhìn vào biến% PATH% của mình chưa. Đó là những gì Windows sử dụng để tìm bất kỳ thực thi nào.

5
sblundy

Chỉ cần thực thi lệnh set trong dòng lệnh của bạn. Sau đó, bạn thấy tất cả các biến môi trường bạn đã đặt.

Hoặc nếu trên Unix bạn có thể đơn giản hóa nó:

$ set | grep "Java_HOME" 
5
anon

Đây là hệ điều hành cụ thể. Trên Unix:

which Java

sẽ hiển thị đường dẫn đến tệp thực thi. Tôi không biết tương đương Windows, nhưng ở đó bạn thường có thư mục bin của bản cài đặt JDK trong hệ thống PATH:

echo %PATH%
3
Michael Borgwardt

Không có câu trả lời nào trong số này là đúng cho Linux nếu bạn đang tìm kiếm ngôi nhà bao gồm các thư mục con như: bin, docs, bao gồm, jre, lib, v.v.

Trên Ubuntu cho openjdk1.8.0, đây là: /usr/lib/jvm/Java-1.8.0-openjdk-AMD64

và bạn có thể thích sử dụng nó cho Java_HOME vì bạn sẽ có thể tìm thấy các tiêu đề nếu bạn xây dựng các tệp nguồn JNI. Mặc dù đúng which Java sẽ cung cấp đường dẫn nhị phân, nhưng đó không phải là nhà JDK thực sự.

2
EntangledLoops

Trên macOS, hãy chạy:

cd /tmp && echo 'public class Main {public static void main(String[] args) {System.out.println(System.getProperty("Java.home"));}}' > Main.Java && javac Main.Java && Java Main

Trên máy của tôi, bản in này:

/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home

Lưu ý rằng việc chạy which Java không hiển thị vị trí JDK, vì lệnh Java thay vào đó là một phần của JavaVM.framework, bao bọc JDK thực:

$ which Java
/usr/bin/Java
/private/tmp
$ ls -l /usr/bin/Java
lrwxr-xr-x  1 root  wheel  74 14 Nov 17:37 /usr/bin/Java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/Java
1
jameshfisher
#!/bin/bash

if [[ $(which ${Java_HOME}/bin/Java) ]]; then
    exe="${Java_HOME}/bin/Java"
Elif [[ $(which Java) ]]; then
    exe="Java"
else 
    echo "Java environment is not detected."
    exit 1
fi

${exe} -version

Cho cửa sổ:

@echo off
if "%Java_HOME%" == "" goto nojavahome

echo Using Java_HOME            :   %Java_HOME%

"%Java_HOME%/bin/Java.exe" -version
goto exit

:nojavahome
echo The Java_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program.
goto exit

:exit

Liên kết này có thể giúp giải thích cách tìm Java thực thi từ bash: http://srcode.org/2014/05/07/detect-Java-executable/

0
Elgs Qian Chen

Kịch bản cho Windows 32/64 bit.

@echo off

setlocal enabledelayedexpansion

::- Get the Java Version
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment"
set KEY64="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment"
set VALUE=CurrentVersion
reg query %KEY% /v %VALUE% 2>nul || (
    set KEY=!KEY64!
    reg query !KEY! /v %VALUE% 2>nul || (
    echo JRE not installed 
    exit /b 1
)
)

set JRE_VERSION=
for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do (
    set JRE_VERSION=%%b
)

echo JRE VERSION: %JRE_VERSION%

::- Get the JavaHome
set KEY="HKLM\SOFTWARE\JavaSoft\Java Runtime Environment\%JRE_VERSION%"
set KEY64="HKLM\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\%JRE_VERSION%"
set VALUE=JavaHome
reg query %KEY% /v %VALUE% 2>nul || (
    set KEY=!KEY64!
    reg query !KEY! /v %VALUE% 2>nul || (
    echo JavaHome not installed
    exit /b 1
)
)

set JAVAHOME=
for /f "tokens=2,*" %%a in ('reg query %KEY% /v %VALUE% ^| findstr %VALUE%') do (
    set JAVAHOME=%%b
)

echo JavaHome: %JAVAHOME%

endlocal
0
Rudixx

trong cmd Windows:

set "Java_HOME" 
0
Husam

Tôi đã cải thiện câu trả lời munsingh ở trên bằng cách kiểm tra khóa đăng ký trong các đăng ký 64 bit và 32 bit, nếu cần:

::- Test for the registry location  
SET VALUE=CurrentVersion
SET KEY_1="HKLM\SOFTWARE\JavaSoft\Java Development Kit"
SET KEY_2=HKLM\SOFTWARE\JavaSoft\JDK
SET REG_1=reg.exe
SET REG_2="C:\Windows\sysnative\reg.exe"
SET REG_3="C:\Windows\syswow64\reg.exe"

SET KEY=%KEY_1%
SET REG=%REG_1%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

SET KEY=%KEY_2%
SET REG=%REG_1%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

::- %REG_2% is for 64-bit installations, using "C:\Windows\sysnative"
SET KEY=%KEY_1%
SET REG=%REG_2%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

SET KEY=%KEY_2%
SET REG=%REG_2%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

::- %REG_3% is for 32-bit installations on a 64-bit system, using "C:\Windows\syswow64"
SET KEY=%KEY_1%
SET REG=%REG_3%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

SET KEY=%KEY_2%
SET REG=%REG_3%
%REG% QUERY %KEY% /v %VALUE% 2>nul
IF %ERRORLEVEL% EQU 0 GOTO _set_value

:_set_value
FOR /F "tokens=2,*" %%a IN ('%REG% QUERY %KEY% /v %VALUE%') DO (
    SET JDK_VERSION=%%b
)
SET KEY=%KEY%\%JDK_VERSION%
SET VALUE=JavaHome
FOR /F "tokens=2,*" %%a IN ('%REG% QUERY %KEY% /v %VALUE%') DO (
    SET JAVAHOME=%%b
)
ECHO "%JAVAHOME%"
::- SETX Java_HOME "%JAVAHOME%"

tham khảo để truy cập vào sổ đăng ký 64 bit

0
JohnP2