2017-10-13 64 views
1

我想找出安裝在我的機器上的不同java版本,並根據需要卸載幾個版本的nos。瞭解在Powershell的windows計算機中安裝了哪些java版本

所以我想下面的兩個命令:

PS C:\Users\bhatsubh> java -version 
java version "1.8.0_131" 
Java(TM) SE Runtime Environment (build 1.8.0_131-b11) 
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 

PS C:\Users\bhatsubh> Get-CimInstance -ClassName Win32_Product | Where-Object { $_.Vendor -match 'Oracle' -and $_.Name -match 'Java'}

Name    Caption     Vendor     Version     IdentifyingNumber 
----    -------     ------     -------     ----------------- 
Java 8 Update... Java 8 Update 131   Oracle Corporation  8.0.1310.11    {26A24AE4-039D-4CA4-8... 
Java 8 Update... Java 8 Update 131 (64-... Oracle Corporation  8.0.1310.11    {26A24AE4-039D-4CA4-8... 
Java SE Devel... Java SE Development Ki... Oracle Corporation  8.0.1210.13    {64A3A4F4-B792-11D6-A... 
Java Auto Upd... Java Auto Updater   Oracle Corporation  2.8.131.11    {4A03706F-666A-4037-7... 

現在爲什麼是版本號命令返回:Java的版本在Get-CimInstance命令沒有上市。

有人可以幫助我嗎?它讓我困惑。

+0

是的,但哪個命令告訴我正確的輸出。爲什麼這兩個輸出不同 –

回答

0

你需要知道Java SE的開發工具包JDK)和的Java SE運行時環境JRE)不是一回事。

甲骨文在其網站上說:

JDK是構建應用程序的開發環境,並使用Java編程語言的組件。

如果您想要運行Java程序但不開發它們,請下載Java運行時環境或JRE™

所以,你可以看到你有:

  • JRE v8.0.1310.11
  • JRE(64)v8.0.1310.11
  • JDK v8.0.1210.13

和Java Auto Updater。

java -version 

取決於JRE,所以它返回的Java(TM)SE運行時環境版本。

Build 1.8.0_131-b11 and 8.0.1310.11是相同的版本。

0

有關在Java中安裝哪些版本的信息通常可以在Windows註冊表中找到 - 而Powershell最可能讀取註冊表信息。你能做的最好的事情就是與regedit.exe以下按鍵來檢查:

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit 

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment 

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JDK - (Java 9 only) 

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\JRE - (Java 9 only) 

下面這些鍵,你會看到對應安裝的Java開發工具包和Java運行時環境的文件夾。

該版本的子密鑰包含密鑰JavaHome,其中包含安裝相應版本的目錄。

這裏是它應該如何看一個例子:

enter image description here

您可以使用Windows PowerShell,這樣的閱讀註冊表項:

Set-Location -Path "hklm:\SOFTWARE\JavaSoft\Java Development Kit\" 
Get-ItemProperty -Path . 
+0

是的,但我如何自動卸載特定的java版本的過程,除非我得到正確的版本 –

+0

那麼,你的問題是關於理解哪些版本安裝,對嗎?那是我最初試圖回答的。現在我已經添加了關於如何讀取密鑰的信息。 –

0

你PowerShell的輸出被截斷,請貼整個文本。如果你沒有足夠的顯示器大,以適應文本通過> java_out.txt

在shell重定向它隨着java -version你應該看看你有什麼在你JAVA_HOME例如C:\Program Files\Java\jdk1.8.0_92

PowerShell通過註冊表查詢在您的計算機上找到的所有實例。兩件不同的事情。如果在輸出中找不到Java,那意味着powershell無法通過查詢在註冊表中找到它。

我的輸出:

my env: 
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_92 
PS C:\Users\xxx> java -version 
java version "1.8.0_92" 

PS C:\Users\xxx> Get-CimInstance -ClassName Win32_Product | Where-Object { $_.Vendor -match 'Oracle' -and $_.Name -match 'Java' } 

Name    Caption          Vendor          Version          IdentifyingNumber 
----    -------          ------          -------          ----------------- 
Java Configur... Java Configuration Set 1.0 EN    Oracle          1.0           {34E43632-93E0-411C-BC2F-BB6F7A86307F} 
Java(TM) 6 Up... Java(TM) 6 Update 45      Oracle          6.0.450          {26A24AE4-039D-4CA4-87B4-2F83216045FF} 
Java 7 Update 40 Java 7 Update 40       Oracle          7.0.400          {26A24AE4-039D-4CA4-87B4-2F83217040FF} 
Java(TM) 6 Up... Java(TM) 6 Update 45 (64-bit)    Oracle          6.0.450          {26A24AE4-039D-4CA4-87B4-2F86416045FF} 
Java 8 Update... Java 8 Update 92 (64-bit)     Oracle Corporation       8.0.920.14         {26A24AE4-039D-4CA4-87B4-2F86418092F0} 
Java SE Devel... Java SE Development Kit 8 Update 92 (64-... Oracle Corporation       8.0.920.14         {64A3A4F4-B792-11D6-A78A-00B0D0180920} 
Java Auto Upd... Java Auto Updater       Oracle Corporation       2.8.92.14         {4A03706F-666A-4037-7777-5F2748764D10} 

通知的IdentifyingNumber柱(Java Configuration Set 1.0 EN)。這是您可以在註冊表中找到它的關鍵。

例如,你會發現在註冊表項:34E43632-93E0-411C-BC2F-BB6F7A86307F以下信息:

Powershell query for java

這是看到的PowerShell的。如果您的JAVA_HOME java沒有正確的註冊表項,您將不會在powershell輸出中看到它。

相關問題