如何获得最新的JRE / JDK作为zip文件而不是EXE或MSI安装程序?[关闭]


387

我想确保一切都会通过复制Java文件夹的内容并设置环境变量而起作用。

我通常在虚拟机中运行安装程序,压缩\ java文件夹内容,返回虚拟机的快照,然后解压缩压缩文件。

我找不到最新的JRE / JDK作为zip文件可用的地方...

http://java.sun.com/javase/downloads/index.jsp

http://download.java.net/jdk6/

或者,可以安全地假设sun的exe安装程序只是将整个程序解压缩,而不会弄乱注册表,环境变量等...?

有关: 在Windows上手动安装Java?

-在所有这些时间之后,我发现这个网站似乎正是我所寻找的(2018-05-22)


2
Java安装程序将(或至少应该)设置JAVA_HOME。可能它也会做其他事情,因为Java本身可能不会找到Windows控制面板的方式。据我所知,Sun没有可用的ZIP。尽管我从未尝试过找到一个。
卡洛斯,

2
“ ...但是我想确保仅通过复制java文件夹的内容并设置环境变量,一切都可以正常工作。” 为什么?
斯蒂芬·C

7
public jre与Windows文件夹混在一起,以在默认路径中提供java.exe。
托尔比约恩Ravn的安徒生

10
为了支持这个问题:我必须手动安装JRE,以避免我的公司倾向于通过远程安装“修复”来破坏它。目前,我已安装,复制并卸载它以将其隐藏起来,这似乎有些烦人,但现在这种方式破坏了每个补丁的整个开发设置。
Bill K

2
@Carlos我无法告诉您我必须在安装Java的所有不同计算机上手动设置JAVA_HOME多少次。格式化计算机时,由于Maven需要对其进行设置并迫使我对其进行修复,因此它总是使我很烦。我不知道为什么它无法为我设置而对其他用户仍然有效(因为我在Windows XP,7和8上遇到过此问题)。我一直以为安装程序应该为我做,但是最终我自己出于沮丧而这样做。

Answers:


64

您可以从PortableApps.com下载Java Portable。它不会更改您的系统设置。您可以将其放在USB记忆棒上。

UPD:对于那些需要JDK的人,有一个开源项目OpenJDK Portable

UPD2:还有一个JDK Portable(Oracle)

有些人可能对正式的Oracle 生产就绪的JDK开源构建感兴趣


41
很好,但这只是一个JRE,而不是JDK。
barfuin 2012年

1
@Vivien,如果OpenJDK的为你的作品有OpenJDK的便携式项目- sourceforge.net/projects/openjdkportable
马克西姆六。

对于视窗 OpenJDK的便携式见stackoverflow.com/questions/5991508/...
Pacerier

3
最好由Oracle提供。
Mehdi


501

不幸的是,JDK不能作为可移植的ZIP文件使用。但是,您可以按照以下步骤操作:

  • 创建工作的JDK目录(C:\JDK在这种情况下)
  • 从Oracle 下载最新版本的JDK(例如jdk-7u7-windows-x64.exe
  • 下载并安装7-Zip(如果您不是管理员,则下载7-Zip便携式版本)
  • 使用7-Zip将所有文件提取jdk-XuXX-windows-x64.exe到目录中C:\JDK
  • 在中执行以下命令cmd.exe
    • cd C:\JDK\.rsrc\1033\JAVA_CAB10
    • extrac32 111
  • C:\JDK\.rsrc\1033\JAVA_CAB10\tools.zip用7拉链解包
  • 在中执行以下命令cmd.exe
    • cd C:\JDK\.rsrc\1033\JAVA_CAB10\tools\
    • for /r %x in (*.pack) do .\bin\unpack200 -r "%x" "%~dx%~px%~nx.jar"(这会将所有.pack文件转换成.jar文件)
  • 复制C:\JDK\.rsrc\1033\JAVA_CAB10\tools您希望JDK存放的所有内容
  • 设置JAVA_HOMEPATH手动指向您的JDK目录及其BIN子目录。

24
如果要使其自动化,则一旦安装了7-zip,就可以使用随它一起安装的7z.exe实用程序进行所有提取(在此解决方案中,它也替代了extrac32)。因此,例如:7z e jdk-7u15-windows-x64.exe .rsrc/JAVA_CAB10/111 7z e 111 7z x -ojdk_dir tools.zip然后删除临时111和tools.zip文件并解压缩。在msys / cygwin下的解压缩可以通过以下命令完成find jdk_dir -name "*.pack" -exec sh -c 'jdk_dir/bin/unpack200 -r "{}" "$(dirname "{}")/$(basename "{}" .pack).jar"' \;
amichair

8
如果需要src.zip,则还应该在.rsrc / JAVA_CAB9中“ extrac32 110”,并将其复制到生成的JDK目录的根目录中。
克里斯·诺

39
从JDK 7u40开始,该exe文件似乎直接在其中包含tools.zip,因此您应该跳过安装(111)步骤,而直接从exe中提取tools.zip,然后从那里继续。
amichair

3
我没有.rsrc文件夹,所以我要做的是在C:\ JDK文件夹本身上运行unpack200步骤,并且可以正常工作。(JDK 8u65)
熔融冰

2
@AlixLo​​urme对于jdk-6u45-windows-x64同样适用,文件位于.rsrc\1033\JAVA_CAB10
Adam Burley

69
  • 创建可用于RWX的目标文件夹(例如C:\jdk8
  • 从Oracle下载jdk exe(例如jdk-8u72-windows-x64.exe
  • 将其中的内容解压缩tools.zip到目标文件夹中
  • 在中cmd.exe,运行:
    • cd C:\jdk8
    • for /r %x in (*.pack) do .\bin\unpack200 -r "%x" "%~dx%~px%~nx.jar"

该解决方案也适用于JDK 8,没有管理员权限。


1
它适用于Windows 7上的64位版本的jdk-8u31-windows-x64。
digfish

这个答案使我能够解压缩JDK 8
user1445967 2015年

运行Java -version的@MarcT仍然指向旧的jdk。如何更新java指向新的jdk?
埃德蒙

1
看来7-Zip解压缩JRE_xxx.exe文件会创建installerexe文件,然后再次将其解压缩到同一文件夹。JDK_xxx.exe文件创建tools.zip,再次将其解压缩。
Whome

4
显然,Oracle使用最新的JDK8更新(111、112)更改了包装,并且此技巧不再起作用:-(
Marc T

46

对于JDK 8u102,事情发生了变化,这对我有用:

  1. 下载Windows JDK exe
  2. 用7拉链打开
  3. 将内容转储到目录%JDK-EXE%
  4. cmd:光盘%JDK-EXE%.rsrc \ 1033 \ JAVA_CAB10
  5. cmd:extrac32 111
  6. 现在在目录中有一个tools.zip,用7-Zip打开
  7. 将内容提取到新目录%JDK-VERSION%
  8. cmd:cd%JDK-VERSION%
  9. cmd:对于(* .pack)中的/ r%x执行。\ bin \ unpack200 -r“%x”“%〜dx%〜px%〜nx.jar”
  10. src.zip位于%JDK-EXE%.rsrc \ 1033 \ JAVA_CAB9 \ 110 \中-将副本放入%JDK-VERSION%

现在您可以开始了。您可能需要设置JAVA_HOME和PATH指向%JDK-VERSION%目录及其BIN子目录。


1
如果上述内容过于艰苦,您还可以尝试Portableapps.com/apps/utilities/jdkportable
David Richmond,

2
这个家伙需要一枚能制造出这种便携式包装的勋章
hephestos

我做了一个小工具,以上述过程自动化:github.com/kbridge/jix
BRK

这对我有用。谢谢!
Vignesh

29

这是一种好方法,但是有点复杂:

阶段1:本地安装文件中的MSI和CAB

  1. 从Oracle(Sun)网站下载JRE或JDK。此方法适用于任何版本以及SDK或JRE。

  2. 运行并等待安装程序加载。最小化窗口。

  3. 在Windows 7中,您应该浏览到以下位置:

    C:\ Users \ YOUR_USER_NAME \ AppData \ LocalLow \ Sun \ Java

  4. 在那里,您将拥有一些MSI和CAB文件。

在此处输入图片说明

阶段2:使用uniextract轻松提取MSI和CAB

  1. 浏览到通用提取器| LegRoom.net并下载UniExtract Binary Archive

  2. 使用WinRar或任何可用的un-RAR程序,然后在任意位置提取uniextract161_noinst.rar

在此处输入图片说明

第三阶段:最后,提取名为core.zip的内部容器

  1. 拖放jdk1.6.0_31.msijre1.6.0_31.msi上的图标UniExtract.exe

  2. 选择“提取方法:MSI管理安装程序”。等待过程完成。

  3. 输入新创建的文件夹。

    如果已拖放jre1.6.0_31.msi,则应该有一个jre1.6.0_31文件夹

  4. 跟踪内部的所有级别,您将看到core.zip在此处输入图片说明

  5. 这就是你所追求的。您可以将其解压缩到任何地方,而无需安装任何系统即可获得Java运行时或SDK的内容。

*现在您可以关闭在第1阶段中打开的Java安装程序*


这似乎对我不起作用,我正在尝试在Windows 7下获取6.45x64的Java,我收到内部错误2203有什么想法吗?
Jackie 2013年

我认为我的问题与作为在线安装程序有关。我发现一个较旧的(x86)版本是脱机安装程序,它似乎给了我core.zip
Jackie

仍然似乎无法在JDK上使用它……
Jackie

@Jackie,您应该使用完整版本(也称为“离线”)。

对我来说,core.zip似乎是tools.zip对于JDK 8
Dessus

24

答案已经给出了。它也适用于“ jdk-8u91-windows-x64.exe”

  1. 用7-zip解压缩,因此我们得到tools.zip
  2. 将tools.zip解压缩到folder_name文件夹中,以便我们获得图片中的内容 在此处输入图片说明

  3. 在cmd中,移至文件夹folder_name / bin并运行命令

    Java版本

输出将是

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

这表明有些混乱。实际上,我们需要打开所有包装。

  1. 在cmd中,移至文件夹folder_name并通过执行以下命令自动执行解压缩

    为(* .pack)中的/ r%x做。\ bin \ unpack200 -r“%x”“%〜dx%〜px%〜nx.jar”

  2. 再次执行步骤3,如果出现输出波纹,则表明JDK可以使用了。


java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode)

1
太棒了 你让我今天一整天都感觉很好。像魅力一样工作。这是OP问题的准确答案。非常感谢详细的说明:)
kaluva

这极大地帮助了我-我只是按照以下步骤获得了用于测试旧事物的“便携式” JRE 6u45 64位。:)

谢啦。它也适用于“ jdk-8u102-windows-i586.exe”。
Ashrumochan

17

我就是这样

开始安装exe并等待以下屏幕,

在此处输入图片说明

转到 C:\Program Files (x86)\Java并将您的JDK复制到另一个地方。

单击“ x”取消安装并卸载JDK。

将复制的JDK复制回C:\Program Files (x86)\Java您选择的其他文件夹中


3
人们不知何故错过了这个宝石。有用!
拉玛赞·波拉特

自我注意:即使取消安装后,我也必须使用“控制面板” |“删除” /“卸载”它。程序和特点。此解决方案在列表中应该更高,它快速,简单且有效。
posix99 '18

2
当您在计算机上没有管理员权限时
无用

7

使用JDK下载JAVA SE

  1. 从Oracle网站下载jdkhttp : //www.oracle.com/technetwork/java/javase/downloads/index.html
  2. 解压缩exe文件。例如:jdk-8u5-windows-x64.exe
  3. 将以下文件解压缩tools.zip(在未压缩的文件夹下)到所需的JAVA_HOME
  4. 更新JAVA_HOME环境变量以指向所需的路径

经过测试的版本:jdk-7u60-windows-x64.exe,jdk-7u60-windows-x64.exe

使用JDK下载JAVA EE

  1. 从Oracle网站下载jdkhttp : //www.oracle.com/technetwork/java/javaee/downloads/index.html
  2. 解压缩exe文件。例如:jdk-7u55-windows-x64.exe
  3. 将以下文件解压缩Product \ Packages \ jdk.zip(在解压缩后的文件夹下)到所需的JAVA_HOME
  4. 更新JAVA_HOME环境变量以指向所需的路径

测试版本:jdk-7u55-windows-x64.exe


使用jdk-7u60,我用7zip解压缩(第2步)后,我只得到tools.zip,没有从可执行文件中提取其他文件... :(
Sorin Postelnicu 2014年

实际上,对于我来说,对于jdk-7u55而言,对于x64和x32都发生了同样的情况……
Sorin Postelnicu 2014年

您正在尝试下载Java SE开发套件,而不是Java EE开发套件。对于Java SE JDK,只需将tools.zip文件解压缩到JAVA_HOME文件夹。请参阅上面的更新说明。
Alin Stoian 2014年

3
我提取了tools.zip并设置了JAVA_HOME。在运行时出现“ java / lang / NoClassDefFoundError:java / lang / Object”后javac
arulraj.net

1
@ arulraj.net我所做的是遵循Igor指南(向上滚动),在他指定的jdk文件夹中提取执行以下命令后for /r %x in (*.pack) do .\bin\unpack200 -r "%x" "%~dx%~px%~nx.jar"
N.Schipper 2015年

7

Oracle网站上存在针对以下操作系统的Java运行时环境(JRE)的.tar.gz文件:Windows x86,Windows x64,Linux x86,Linux x64,Mac OS X x64,Solaris x64。请参阅:http : //www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

还有Java开发工具包(JDK)http : //www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。Windows .tar.gz。丢失,但是您可以使用7zip之类的工具提取.exe文件。

我发现这对于使Eclipse具有可移植性非常有用。;-)


2
OSX也缺少JDK .tar.gz。
lucasvc

解压缩Windows .exe不会为您提供所需格式的文件(至少从8u181起)。其他答案提供了有关如何进一步提取内容的详细步骤。
Rangi Keen '18

7

您可以从Azul Systems 下载可移植的Zulu .zip存档,这些存档是Windows,Linux(RHEL,SUSE,Debian,Ubuntu,CentOS)和Mac OS X的OpenJDK的内部版本。

Zulu是OpenJDK的认证版本,完全符合Java SE标准。Zulu是100%开放源代码,可免费下载。现在,Java开发人员,系统管理员和最终用户可以通过部署灵活性并控制升级时间来享受开源Java的全部好处。

有关不同JVM(包括Zulu)及其架构和OS支持的更多技术信息,请参见此处


2
它具有适用于Mac以及Windows和Linux的zip文件。非常好!
法学徒

7

广泛支持的答案很好,我已经以这个bat文件的形式使用了很长时间:

@ECHO OFF

SETLOCAL ENABLEDELAYEDEXPANSION

SET ROOT=%cd%

REM Get the tools.zip from the innards of the installer
7z e *.exe .rsrc/1033/JAVA_CAB10/111
7z e 111 7z x tools.zip
REM Extract all
7z x -aoa tools.zip -ojdk

del tools.zip
del 111

REM Searching directory structure from root for subfolders and zipfiles.
FOR /F "delims==" %%d IN ('dir /ogne /ad /b /s "%ROOT%"') DO (
    echo Descending into %%d
    FOR /F "delims==" %%f IN ('dir /b "%%d\*.pack"') DO (
        echo Extracting "%%d\%%f"
        REM Extract all packs into jars.
        jdk\bin\unpack200 -r  "%%d\%%f" "%%d\%%~nf.jar"
    )
)

ENDLOCAL
pause;

它需要访问7zip的路径,并且必须在您选择的JDK旁边的文件夹中运行(由于此处带有* .exe,因此可以找到它)。

可以在8u144上运行,我想它可以从8u20上运行。


如果还需要源存档,则可以添加7z e *.exe .rsrc/1033/JAVA_CAB9/1107z e 110 7z x src.zip
Rangi Keen '18

你是我的英雄!希望我能投票一次以上。我的意思是,所有其他答案都很好,但这是一键式复制粘贴解决方案:-)
Nils Schmidt

很好地为8u201。谢谢!
raychi,



4

http://www.processing.org/download/下载Processing应用程序。压缩文件包含一个名为java的文件夹。它包括JDK 1.6.0_32(版本于2013年2月19日检查)。


截至今天,32位Windows版本包含JRE 1.7.0_40
acdcjunior 2014年

如何将处理Java文件夹添加到eclipse?
Anna.Klee 2014年

@mrsquad在窗口->首选项菜单(或在Mac上为Eclipse->首选项菜单)中的打开首选项对话框,转到Java->已安装的JRE,然后单击添加。
罗伯托·利纳雷斯

已检查:2015-11-30,版本:1.8.0_51
acdcjunior

这是jre,不是jdk?
Stardust

4

OSX指令

经过测试jdk-8u74-macosx-x64.dmg

  1. 从Oracle下载 .dmg
  2. 挂载磁盘映像
  3. 提取.pkg,拖动。不要双击(它将安装)。
  4. 打开终端并cd进入包装。
  5. mkdir jdk-$version && cd jdk-$version
  6. xar -xf ../JDK*.pkg
  7. cd jdkTAB
  8. tar zxf Payload
  9. Contents/Home文件夹包含JDK

这确实是Mac的最佳解决方案!仅需注意,Contents/Home要从Finder 访问文件夹,请重命名jdk TAB文件(从步骤7开始)以删除.pkg扩展名,并使其成为Finder可访问的文件夹
Slartibartfast

3

这比我正在寻找的要近了一步……
打开时间

1
切换到Ubuntu。“ sudo apt-get sun-java6-sdk” ...(您第一次必须接受许可证)。
托尔比约恩Ravn的安徒生

1
我已经切换到ubuntu,即使在那儿,我也只是从oracle下载并解压缩而不是发布apt-get,仅通过符号链接,我就可以并排安装许多JDK ...
opensas 2011年

1
您不能轻松获得“下载并解压缩并运行”功能,因为您需要接受许可。但是,我发现Jenkins可以自动下载Java并将其提供给自己。也许您可以自己提高该功能?
托尔比约恩Ravn的安德森

这不再起作用。下载链接已被删除。
mikeslattery



2

Igor和CharlesB描述的过程对我有用,因为IDE(如NetBeans和Eclipse)允许指定JDK的位置,即使像Apache Tomcat(ZIP发行版)之类的软件也使用BASH-FILES进行设置(然后使用以下命令指定JDK位置)亲戚URI)。
我有一个带有NetBeans,Eclipse,Apache Tomcat的USB硬盘,并且在“便携式模式”下使用JDK。
我有一种从安装程序文件中提取JDK副本的方法:安装它,在其他位置复制它,然后将其卸载。提取它的肮脏方法,但成功。
放置EXTRA-LIBS的地方是:%PLACE_WHERE_JDK_ARE%\ jre \ lib \ ext


2

您可以只使用7zip(或其他类似的应用程序)将安装目录中包含的dirs放入core.zip文件中。只需使用7zip浏览exe,您将看到一个core.zip文件,其中包含所有通常位于“ jreX”目录(其中X是主要版本号)中的文件。至于设置环境变量等,您可以遵循其他答案。如果您只需要一个可移植的jre(例如,您可以使用java.exe jarfile或javaw.exe jarfile运行jar),那么此解决方案就可以了。这与将jre目录从一个地方复制到另一个地方非常相似



2

这个连结

http://www.java.com/en/download/manual.jsp

帮助您至少避免讨厌的预加载安装程序直接使用SDK。

从那里,我将其安装在旧的笨拙的PC或其他地方的一次性VM中,然后将生成的

C:\Program Files (x86)\Java\jre7

(或类似的产品)到您的新机器上,设置很少的常规ENV变量,理想情况下,无需所有市场营销垃圾和潜在的干扰。当然,频繁的自动更新也没有安全性。


1
同样也没有浏览器插件,因此applet和javafx无法使用,webstart不可用,jar类型未绑定到javaw.exe,也没有安装任何“默认java”。但是,如果您不需要任何这些,那当然很好。
金比

是的,我完全同意:-)这就是OP“无安装程序”的要求。当然,某个人(一定不是sun-oracle的人)可以分析定期安装过程中注册表发生的情况,并根据实际需要提供大量的.reg(istry)文件。众所周知,许多浏览器都禁用了所有Java插件。有充分的理由。我很高兴,他们做到了。
Frank Nocke

2

我发现您可以在Wine中运行安装程序。这有效:

WINEPREFIX=/home/jason/java wine jre-7u11-windows-i586.exe

然后,一旦完成,您就可以将 /home/jason/java/drive_c/Program\ Files\ \(x86\)/Java/jre7/

这也应该适用于jdk


2

您可以下载包含jdk的SEVER JRE。服务器JRE 7

  1. 下载适用于Windows系统的server-jre- <版本> .tar.gz文件。
  2. 如果您可以提取7zip tar文件,则我可以使用cygwin(可以在没有管理员权限的情况下安装cygwin,请参见此答案)来通过命令提取tar文件,tar xzvf file.tar.gz其他任何tar提取程序也将起作用

现在,提取的JDK文件夹将在同一文件夹中创建。


1
甚至适用于jdk8。你让我今天一整天都感觉很好。到目前为止,这是最简单的方法。
kspviswa

2
mkdir c:\JDK
cd c:\JDK
git clone https://bitbucket.org/ramazanpolat/jdk-8u112-windows-x64/

要么

git clone https://bitbucket.org/ramazanpolat/jdk-8u112-windows-x86

1

我确实多次复制了JRE文件夹,它始终可以正常工作。但是我真的不确定是否可以获取包含其内容的zip文件,因为官方安装会安装IE,Firefox和其他任何版本的插件。


好吧,我有一个zip文件上传到保管箱,我下载了该文件并复制到每台机器上……到目前为止,它工作正常……
opensas 2010年


1

来自以下提示的命令包装为批处理脚本。将其另存为unpack.bat。然后将其与jdk / jre提取的文件放置在dir中。

@echo off

cd /d "%~dp0"
for /r %%x in (*.pack) do .\bin\unpack200 -r "%%x" "%%~dx%%~px%%~nx.jar"

0

我使用exe安装程序安装了JDK 8,然后卸载了JRE,现在有了JDK文件夹,没有更改env变量或其他设置。



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.