如何将最新的JRE/JDK作为zip文件而不是EXE或MSI安装程序?

ope*_*sas 376 java installation

我喜欢通过复制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)

小智 482

遗憾的是,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子目录.

  • 看来,作为JDK 7u40的,exe文件有tools.zip直接在它里面,所以你应该跳过驾驶室(111)的步骤和刚刚从exe文件中提取tools.zip直接从那里继续. (38认同)
  • 如果要自动化它,一旦安装了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"'\;`. (23认同)
  • 如果你想要src.zip,那么你也应该在.rsrc/JAVA_CAB9中"extrac32 110",并将其复制到生成的JDK目录的根目录. (8认同)
  • 我没有.rsrc文件夹,所以我所做的是在C:\ JDK文件夹本身运行unpack200步骤并且这样做.(JDK 8u65) (3认同)
  • @AlixLo​​urme对于jdk-6u45-windows-x64也是如此,该文件位于`.rsrc\1033\JAVA_CAB10`中 (2认同)
  • for/r%x in(*.pack)do.\ bin\unpack200 -r"%x""%~dx%~px%~nx.jar"(这会将所有.pack文件转换为.jar文件)这是唯一重要的一步谢谢! (2认同)

Mar*_*c T 67

  • 创建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,没有管理员权限.

  • 显然,Oracle用最新的JDK8更新(111,112)改变了包装,这个技巧不再起作用了:-( (4认同)

Mak*_*Vi. 64

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

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

  • 这很好,但它只是一个JRE,而不是JDK. (41认同)
  • 如果它是Oracle的提供者会更好. (3认同)
  • 更新:[PortableApps现在提供Java JDK的可移植版本.](https://portableapps.com/apps/utilities/jdkportable) (2认同)

Dav*_*ond 42

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

  1. 下载windows JDK exe
  2. 打开7-Zip
  3. 将内容转储到目录%JDK-EXE%
  4. cmd:cd%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:for/r%x in(*.pack)do.\ 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%dir及其BIN子目录.

  • 如果以上太像努力工作,你也可以尝试 https://portableapps.com/apps/utilities/jdkportable (2认同)
  • 这家伙需要一枚奖章来制作这个便携包 (2认同)

小智 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. 浏览到Universal Extractor | LegRoom.net并下载UniExtract 二进制存档.

  2. 使用WinRar或任何可用的非RAR程序,并在任何地方解压缩uniextract161_noinst.rar.

在此输入图像描述

阶段3:最后,提取名为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安装程序


小智 25

之前已经给出了答案.它适用于"jdk-8u91-windows-x64.exe"

  1. 用7-zip解压缩,所以我们得到tools.zip
  2. 将tools.zip解压缩到文件夹folder_name,以便我们获取图片中的内容 在此输入图像描述

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

    java -version

输出将是

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
Run Code Online (Sandbox Code Playgroud)

这表明有些东西搞乱了.实际上我们需要解压缩所有包裹.

  1. 在cmd中移动到文件夹folder_name并通过执行命令自动执行解包

    for/r%x in(*.pack)do.\ 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)
Run Code Online (Sandbox Code Playgroud)


Avi*_*ngh 15

我是这样做的,

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

在此输入图像描述

转到C:\Program Files (x86)\Java并将JDK复制到另一个位置.

单击"x"取消安装并卸载JDK.

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

  • 人们错过了这个宝石.有用! (3认同)
  • 当您在计算机上没有管理员权限时,此功能无用 (2认同)

Ali*_*ian 7

使用JDK下载JAVA SE

  1. 从Oracle网站下载jdk:http://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网站下载jdk:http://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

  • 我提取了tools.zip并设置了JAVA_HOME.在运行`javac`后我得到"java/lang/NoClassDefFoundError:java/lang/Object". (3认同)

K B*_*K B 7

Oracle网站上有一个针对这些操作系统的Java Runtime Environment(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 Development Kit(JDK):http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html.Windows .tar.gz.缺少,但您可以使用像7zip这样的工具提取.exe文件.

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

  • OSX也缺少JDK .tar.gz. (2认同)

Voi*_*icu 7

您可以从Azul Systems 下载便携式Zulu .zip存档,它是OpenJDK for Windows,Linux(RHEL,SUSE,Debian,Ubuntu,CentOS)和Mac OS X的构建版本.

Zulu是OpenJDK的认证版本,完全符合Java SE标准.Zulu是100%开源的,可免费下载.现在,Java开发人员,系统管理员和最终用户可以享受开源Java的全部优势,具有部署灵活性和对升级时序的控制.

在不同的JVM(包括祖鲁语),他们的体系结构和操作系统支持的更多技术信息在这里.

  • 这包含适用于Mac以及Windows和Linux的zip文件.非常好! (2认同)

小智 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;
Run Code Online (Sandbox Code Playgroud)

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

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


swa*_*ntu 5

试试这个:http : //maven.nuiton.org/nexus/content/repositories/jvm/com/oracle/jre/

该链接包含所有版本的便携式zip发行版。