国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

做一個自動配置JDK環境變量的Powershell腳本

魏明 / 2273人閱讀

摘要:尤其是對于那些不太懂電腦的人來說,配置環境變量簡直要命了。我的想法很簡單,這個腳本應該在安裝程序執行完畢調用,從注冊表獲取的安裝位置,然后自動完成環境變量的配置。

本來想把這篇的內容包括在我的Powershell系列文章之內的,后來寫完之后才想起來,這時候我已經復制粘貼到簡書、CSDN和SegmentFault三個地方了。所以這一篇干脆多帶帶寫成一篇文章。

其實這篇文章的動機也很簡單,每個初學Java的人,都會被配置環境變量所難倒。尤其是對于那些不太懂電腦的人來說,配置環境變量簡直要命了。就算我這種配置了幾十次環境變量的人,也經常忘了怎么配置,每次配置也得現查。最蛋疼的是,JDK的Windows平臺安裝包居然沒有配置環境變量的功能,那么這個安裝包到底有何用處?

好了,廢話不多說了。由于這里只打算編寫一個簡單的腳本,所以首先讓我們規定一下這個腳本的用途。我的想法很簡單,這個腳本應該在JDK安裝程序執行完畢調用,從注冊表獲取JDK的安裝位置,然后自動完成環境變量的配置。至于安裝位置是否存在,安裝文件是否缺失,這都屬于用戶的問題,不是我這個腳本的解決范圍。

獲取JDK位置

在Windows注冊表中保存著所有安裝程序的信息,它們都在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall鍵下。

然后我們尋找JDK的信息。這里我從我電腦的安裝的JDK 8中截取了前一部分SE Development Kit作為查詢字符串,不保證JDK 6和JDK 7的前一部分也和這一樣。

$softwares = Get-ItemProperty HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall* 
$jdk = $softwares  | Where-Object DisplayName -Match "Java SE Development Kit"

考慮到有的人電腦上安裝了不止一個JDK,我這里還做了多個JDK的處理工作。不過由于我電腦上只有一個JDK,所以這一部分我沒有測試,不保證一定可以工作。

if ($jdk.Count -gt 1) {
    Write-Host "Found more than one jdks :"
    $id = 1
    foreach ($e in $jdk) {
        Write-Host "${id}." $e.DisplayName
        $id++
    }
    $choice = [int](Read-Host -Prompt "which to use ?")
    $jdk = $jdk[$choice]
}

獲取到JDK信息之后,讀取它的安裝位置屬性,即可獲取到JDK的安裝位置。

$install_location = $jdk.InstallLocation
# 去掉路徑最后的斜杠
Write-Host "Found installation Location : ${install_location}".trim("")
添加環境變量

下面參考鏈接中介紹了新建環境變量的方法。如果需要創建一個臨時環境變量,也就是只在當前Powershell窗口中有效的,只需要一句話就可以搞定。

$env:TestVariable = "This is a test environment variable."

如果需要創建用戶或者系統級別的環境變量,需要調用.NET框架的方法。這個方法有三個參數,第一個指定環境變量名稱,第二個指定環境變量的值,第三個指定環境變量類型(Process是僅當前進程有效,User是用戶級別,Machine是系統環境變量且需要管理員權限)。

[Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "Machine")

然后我們根據JDK安裝位置設置環境變量。

$java_home = $install_location
$classpath = "%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib	ools.jar"
$path = "%JAVA_HOME%in;" + $env:Path

[Environment]::SetEnvironmentVariable("JAVA_HOME", $java_home, "Machine")
[Environment]::SetEnvironmentVariable("CLASSPATH", $classpath, "Machine")
[Environment]::SetEnvironmentVariable("PATH", $path , "Machine")

最后,打開一個新的CMD或者是Powershell窗口,輸入一下兩條命令測試環境變量是否配置正確。需要注意JDK安裝包好像會寫一個java.exe鏈接到可執行路徑下,所以javajavac兩條命令都需要測試才能確保環境變量配置成功。

java -version
javac -version
完整腳本

下面是完整的腳本,它也放到了我的Github上面了,有興趣的同學可以看看。

# 設置Java SDK 環境變量

$softwares = Get-ItemProperty HKLM:SoftwareMicrosoftWindowsCurrentVersionUninstall* 
$jdk = $softwares  | Where-Object DisplayName -Match "Java SE Development Kit"

if ($jdk.Count -gt 1) {
    Write-Host "找到多個JDK安裝程序:"
    $id = 1
    foreach ($e in $jdk) {
        Write-Host "${id}." $e.DisplayName
        $id++
    }
    $choice = [int](Read-Host -Prompt "應該使用哪個?")
    $jdk = $jdk[$choice]
}

$install_location = $jdk.InstallLocation.trim("")
# 去掉路徑最后的斜杠
Write-Host "發現安裝位置: ${install_location}"

# 配置環境變量
$java_home = $install_location
$classpath = "%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib	ools.jar"
$path = "%JAVA_HOME%in;" + $env:Path

[Environment]::SetEnvironmentVariable("JAVA_HOME", $java_home, "Machine")
[Environment]::SetEnvironmentVariable("CLASSPATH", $classpath, "Machine")
[Environment]::SetEnvironmentVariable("PATH", $path , "Machine")


Write-Host "配置JDK環境變量成功"

因為這篇文章寫出了可能就不會再更新了,而Github上腳本還可能會繼續更新,所以我又寫了個下載執行Github上腳本的命令。

invoke-WebRequest https://raw.githubusercontent.com/techstay/powershell-study/master/scripts/set-jdk-env-variables.ps1|Select-Object -ExpandProperty content|Invoke-Expression

如果出現什么策略錯誤,可能是默認情況Powershell禁止運行遠程腳本,允許就可以了。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

這個腳本在我電腦上測試沒問題,不過不一定能夠在所有系統上運行。所以使用的時候請注意,同時歡迎反饋信息。

參考資料

http://jingyan.baidu.com/arti...

https://technet.microsoft.com...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/67134.html

相關文章

  • Java入坑指南

    摘要:入坑指南是滴,下面是一個最低的入坑還應該有種設計模式應該掌握的。堆棧以幀為單位保存線程的狀態,對堆棧的操作為壓棧和出棧執行字節碼以后,將會產生程序計數器和棧,程序計數器存放將要執行下一條指令的偏移量。 Java入坑指南是滴,下面是一個最低的入坑 還應該有23種設計模式應該掌握的。╮(╯▽╰)╭注意,第一個j是大寫。 Java的特點跨平臺,風格接近C++最重要的api文檔 https:/...

    Rindia 評論0 收藏0
  • JDK 環境變量配置

    摘要:環境變量配置環境變量配置在系統變量中新建變量,變量值為安裝路徑,例如默認安裝路徑如下在系統變量中編輯變量,變量值為在系統變量中新建變量,變量值為環境變量配置在系統變量中新建變量,變量值為安裝路徑,例如默認安裝路徑如下在系統變量中新建變量, JDK 環境變量配置 JDK 8 環境變量配置 在系統變量中新建 JAVA_HOME 變量,變量值為 JDK 安裝路徑,例如 JDK 8 默認安...

    robin 評論0 收藏0

發表評論

0條評論

魏明

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<