Notices: This section not yet converted to new layout. Download stats are rolling back out.

Java SE


Package test results are passing.

This package was approved as a trusted package on 8/14/2019.

By default this package installs JDK according to your platform (x86 or x64).

To force x86 (32bit) installation on 64 bit systems

choco install jdk8 --x86


choco install jdk8 --forcex86

Note that params "i586=true" and "x64=false" are deprecated.

if you install by

choco install jdk8 -params "both=true"


Both 32bits and 64bits JDK will be installed and 64bits will be defaults.

By default this package installs JDK with source codes(zip).

If you don't want to install source codes

choco install jdk8 -params "source=false"

If you want auto update

choco install jdk8 -params "static=false"

If you want to specfiy install directory (you need \\ for escape)

choco install jdk8 -params 'installdir=c:\\java8'

To install Java SE, run the following command from the command line or from PowerShell:

C:\> choco install jdk8

To upgrade Java SE, run the following command from the command line or from PowerShell:

C:\> choco upgrade jdk8


  • tools\chocolateyInstall.ps1 Show
    $script_path = $(Split-Path -parent $MyInvocation.MyCommand.Definition)
    $common = $(Join-Path $script_path "common.ps1")
    . $common
    #installs jdk8
    try {
        $params = "$env:chocolateyPackageParameters" 
        $params = (ConvertFrom-StringData $params.Replace(";", "`n")) 
        if (check-both($params)) {
            chocolatey-install $params $true
            chocolatey-install $params
        } else {
            chocolatey-install $params
    } catch {
        if ($_.Exception.InnerException) {
            $msg = $_.Exception.InnerException.Message
        } else {
            $msg = $_.Exception.Message
  • tools\chocolateyUninstall.ps1 Show
    $script_path = $(Split-Path -parent $MyInvocation.MyCommand.Definition)
    $common = $(Join-Path $script_path "common.ps1")
    . $common
    function Uninstall-ChocolateyPath {
      [string] $pathToUninstall,
      [System.EnvironmentVariableTarget] $pathType = [System.EnvironmentVariableTarget]::User
      Write-Debug "Running 'Uninstall-ChocolateyPath' with pathToUninstall:`'$pathToUninstall`'";
      #get the PATH variable
      $envPath = $env:PATH
      if ($envPath.ToLower().Contains($pathToUninstall.ToLower()))
        Write-Host "PATH environment variable has $pathToUninstall in it. Removing..."
        $actualPath = [Environment]::GetEnvironmentVariable('Path', $pathType)
        $statementTerminator = ";"
        # remove $pathToUninstall
        $actualPath = (($actualPath -split $statementTerminator) -ne $pathToUninstall) -join $statementTerminator
        if ($pathType -eq [System.EnvironmentVariableTarget]::Machine) {
          $psArgs = "[Environment]::SetEnvironmentVariable('Path',`'$actualPath`', `'$pathType`')"
          Start-ChocolateyProcessAsAdmin "$psArgs"
        } else {
          [Environment]::SetEnvironmentVariable('Path', $actualPath, $pathType)
        #add it to the local path as well so users will be off and running
        $env:Path = $actualPath
    try {   
      $java_bin = get-java-bin
      Uninstall-ChocolateyPath $java_bin 'Machine'
      if ([Environment]::GetEnvironmentVariable('CLASSPATH','Machine') -eq '.;') {
            Install-ChocolateyEnvironmentVariable 'CLASSPATH' $null 'Machine'
      Install-ChocolateyEnvironmentVariable 'JAVA_HOME' $null 'Machine'
    } catch {
        # ingore exception
  • tools\common.ps1 Show
    $jdk_version = '8u221'
    $build = '11'
    $java_version = "1.8.0_221"
    $uninstall_id = "180221"
    $id = "230deb18db3e4014bb8e3e8324f81b43"
    $script_path = $(Split-Path -parent $MyInvocation.MyCommand.Definition)
    function use64bit($Forcei586 = $false) {
        if ($Forcei586) {
            return $false
        if (Test-Path (Join-Path $script_path "i586.txt")) {
            return $false
        $is64bitOS = Get-ProcessorBits 64
        return $is64bitOS
    function has_file($filename) {
        return Test-Path $filename
    function get-programfilesdir() {
        if ((use64bit) -or (Get-ProcessorBits 32)) {
            $programFiles = (Get-Item "Env:ProgramFiles").Value
        } else {
            $programFiles = (Get-Item "Env:ProgramFiles(x86)").Value
        return $programFiles
    function download-from-oracle($url, $output_filename) {
        if (-not (has_file($output_fileName))) {
            Write-Host  "Downloading JDK from $url"
            $client = New-Object Net.WebClient
            $dummy = $client.DownloadFile($url, $output_filename)
    function download-jdk-file($url, $output_filename) {
        $dummy = download-from-oracle $url $output_filename
    function download-jdk($Forcei586 = $false) {
        $arch = get-arch $Forcei586
        $filename = "jdk-$jdk_version-windows-$arch.exe"
        $url = "$java_version-b$build/$id/windows-i586/$filename"
        $output_filename = Join-Path $script_path $filename
        $dummy = download-jdk-file $url $output_filename
        return $output_filename
    function get-java-home() {
        if (Test-Path (Join-Path $script_path "installdir.txt")) {
            return Get-Content (Join-Path $script_path "installdir.txt")
        $program_files = get-programfilesdir
        return Join-Path $program_files "Java\jdk$java_version"
    function get-java-bin() {
        $java_home = get-java-home
        return Join-Path $java_home 'bin'
    function get-arch($Forcei586 = $false) {
        if((use64bit $Forcei586)) {
            return "x64"
        } else {
            return "i586"
    function chocolatey-install($params, $Forcei586 = $false) {
        $jdk_file = download-jdk $Forcei586
        $arch = get-arch $Forcei586
        $java_home = get-java-home
        $java_bin = get-java-bin
        $install_options = '/s '
        if ($params.static -ne $false) {
            $install_options += 'STATIC=1 '
        if ($params.installdir -ne $null) {
            $install_options += 'INSTALLDIR=' + $params.installdir + ' '
        $install_options += 'ADDLOCAL="ToolsFeature'
        if ($params.source -ne $false) {
            $install_options += ',SourceFeature'
        $install_options += '"'
        #if ($params.source -eq $false) {
        #    $install_options = '/s STATIC=1 ADDLOCAL="ToolsFeature"'
        #} else {
        #    $install_options = '/s STATIC=1 ADDLOCAL="ToolsFeature,SourceFeature"'
        Install-ChocolateyInstallPackage 'jdk8' 'exe' $install_options $jdk_file
    function set-path() {
        $java_home = get-java-home
        $java_bin = get-java-bin
        Install-ChocolateyPath $java_bin 'Machine'
        if ([Environment]::GetEnvironmentVariable('CLASSPATH','Machine') -eq $null) {
            Install-ChocolateyEnvironmentVariable 'CLASSPATH' '.;' 'Machine'
        Install-ChocolateyEnvironmentVariable 'JAVA_HOME' $java_home 'Machine'
    function out-i586($params) {
        if ($env:ChocolateyForceX86 -eq 'true' -or $params.i586 -eq $true -or $params.x64 -eq $false) {
            Out-File (Join-Path $script_path "i586.txt")
    function check-both($params) {
        return ($params.both -eq $true) -and (use64bit)
    function out-both($params) {
        if (check-both($params)) {
                Out-File (Join-Path $script_path "both.txt")
    function out-installdir($params) {
        if ($params.installdir -ne $null) {
            Out-File -InputObject $params.installdir -FilePath (Join-Path $script_path "installdir.txt")

Virus Scan Results

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.


This package has no dependencies.

Package Maintainer(s)

Software Author(s)

  • Sun Microsystems/Oracle Corporation


Release Notes

Java SE Development Kit 8u221


Version History

Version Downloads Last updated Status
Java SE 8.0.211 191147 Sunday, April 21, 2019 approved
Java SE 8.0.201 154584 Wednesday, January 16, 2019 approved
Java SE 8.0.191 136096 Wednesday, October 17, 2018 approved
Show More

Discussion for the Java SE Package

Ground rules:

  • This discussion is only about Java SE and the Java SE package. If you have feedback for Chocolatey, please contact the google group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or Java SE, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.

comments powered by Disqus uses cookies to enhance the user experience of the site.