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

資訊專欄INFORMATION COLUMN

做一個(gè)自動(dòng)配置JDK環(huán)境變量的Powershell腳本

魏明 / 2257人閱讀

摘要:尤其是對(duì)于那些不太懂電腦的人來說,配置環(huán)境變量簡(jiǎn)直要命了。我的想法很簡(jiǎn)單,這個(gè)腳本應(yīng)該在安裝程序執(zhí)行完畢調(diào)用,從注冊(cè)表獲取的安裝位置,然后自動(dòng)完成環(huán)境變量的配置。

本來想把這篇的內(nèi)容包括在我的Powershell系列文章之內(nèi)的,后來寫完之后才想起來,這時(shí)候我已經(jīng)復(fù)制粘貼到簡(jiǎn)書、CSDN和SegmentFault三個(gè)地方了。所以這一篇干脆多帶帶寫成一篇文章。

其實(shí)這篇文章的動(dòng)機(jī)也很簡(jiǎn)單,每個(gè)初學(xué)Java的人,都會(huì)被配置環(huán)境變量所難倒。尤其是對(duì)于那些不太懂電腦的人來說,配置環(huán)境變量簡(jiǎn)直要命了。就算我這種配置了幾十次環(huán)境變量的人,也經(jīng)常忘了怎么配置,每次配置也得現(xiàn)查。最蛋疼的是,JDK的Windows平臺(tái)安裝包居然沒有配置環(huán)境變量的功能,那么這個(gè)安裝包到底有何用處?

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

獲取JDK位置

在Windows注冊(cè)表中保存著所有安裝程序的信息,它們都在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"

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

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("")
添加環(huán)境變量

下面參考鏈接中介紹了新建環(huán)境變量的方法。如果需要?jiǎng)?chuàng)建一個(gè)臨時(shí)環(huán)境變量,也就是只在當(dāng)前Powershell窗口中有效的,只需要一句話就可以搞定。

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

如果需要?jiǎng)?chuàng)建用戶或者系統(tǒng)級(jí)別的環(huán)境變量,需要調(diào)用.NET框架的方法。這個(gè)方法有三個(gè)參數(shù),第一個(gè)指定環(huán)境變量名稱,第二個(gè)指定環(huán)境變量的值,第三個(gè)指定環(huán)境變量類型(Process是僅當(dāng)前進(jìn)程有效,User是用戶級(jí)別,Machine是系統(tǒng)環(huán)境變量且需要管理員權(quán)限)。

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

然后我們根據(jù)JDK安裝位置設(shè)置環(huán)境變量。

$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")

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

java -version
javac -version
完整腳本

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

# 設(shè)置Java SDK 環(huán)境變量

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

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

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

# 配置環(huán)境變量
$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環(huán)境變量成功"

因?yàn)檫@篇文章寫出了可能就不會(huì)再更新了,而Github上腳本還可能會(huì)繼續(xù)更新,所以我又寫了個(gè)下載執(zhí)行Github上腳本的命令。

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

如果出現(xiàn)什么策略錯(cuò)誤,可能是默認(rèn)情況Powershell禁止運(yùn)行遠(yuǎn)程腳本,允許就可以了。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

這個(gè)腳本在我電腦上測(cè)試沒問題,不過不一定能夠在所有系統(tǒng)上運(yùn)行。所以使用的時(shí)候請(qǐng)注意,同時(shí)歡迎反饋信息。

參考資料

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/67134.html

相關(guān)文章

  • Java入坑指南

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

    Rindia 評(píng)論0 收藏0
  • JDK 環(huán)境變量配置

    摘要:環(huán)境變量配置環(huán)境變量配置在系統(tǒng)變量中新建變量,變量值為安裝路徑,例如默認(rèn)安裝路徑如下在系統(tǒng)變量中編輯變量,變量值為在系統(tǒng)變量中新建變量,變量值為環(huán)境變量配置在系統(tǒng)變量中新建變量,變量值為安裝路徑,例如默認(rèn)安裝路徑如下在系統(tǒng)變量中新建變量, JDK 環(huán)境變量配置 JDK 8 環(huán)境變量配置 在系統(tǒng)變量中新建 JAVA_HOME 變量,變量值為 JDK 安裝路徑,例如 JDK 8 默認(rèn)安...

    robin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

魏明

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<