Installation 如何仅提取JDK安装程序的内容

Installation 如何仅提取JDK安装程序的内容,installation,extract,java,Installation,Extract,Java,我刚刚下载了Java SDK/JDK版本5和6,我只需要安装包中包含的开发工具(和一些库),我不需要执行安装,这就是为什么我一开始只需要一个zip包(对于Windows,只有一个exe安装文件),我只需要提取安装包的内容,我认为这可以从命令行完成,但到目前为止,我还没有找到如何做到这一点(我已经考虑过WinRar和7-Zip,但我真的想知道如何不用这些工具来完成) 你以前做过吗?如何做?我用7-zip来做。它似乎可以很好地处理安装程序/自解压可执行文件。也许您可以试试。该网站看起来合法,但我自己

我刚刚下载了Java SDK/JDK版本5和6,我只需要安装包中包含的开发工具(和一些库),我不需要执行安装,这就是为什么我一开始只需要一个zip包(对于Windows,只有一个exe安装文件),我只需要提取安装包的内容,我认为这可以从命令行完成,但到目前为止,我还没有找到如何做到这一点(我已经考虑过WinRar和7-Zip,但我真的想知道如何不用这些工具来完成)


你以前做过吗?如何做?

我用7-zip来做。它似乎可以很好地处理安装程序/自解压可执行文件。

也许您可以试试。该网站看起来合法,但我自己还没有尝试过。

您可以安装一次,然后将安装的内容压缩到\Programs\Java下


这可以在以后的其他地方解压,并在大多数IDE中用作JDK,而无需完全重新安装(但Windows不知道)

您可以使用通用提取器(真正的伟大工具)从.exe文件中提取JDK 1.5和1.6。但不要忘记将所有*.pack文件(用格式压缩)转换为相应的*.jar文件,以获得完整的工作环境。您可以使用JDK本身中提供的unpack200.exe命令。

我创建了cygwin脚本来实现这一点:


下面是用于解包“包”文件的.bat脚本。必须在解压缩的JDK的根目录下运行

@echo off
echo **********************
echo unpack JDK pack-files
echo **********************
pause

set JAVA_HOME=c:\glassfish4\jdk7

setlocal enableextensions
for /r %%f in (*) do call :process %%f
endlocal
goto :eof

:process
if NOT "%~x1" == ".pack" goto :eof
set FOLDER=%~p1

set PWD=%CD%
pushd %FOLDER%
echo Unpacking %~nx1
%JAVA_HOME%\bin\unpack200.exe %~nx1 %~n1.jar
popd

goto :eof
这是的脚本,修改为使用JDK存档中的
unpack200.exe
,并在转换后删除包文件

@echo off

setlocal enableextensions
for /r %%f in (*) do call :process %%f
endlocal
goto :eof

:process
if NOT "%~x1" == ".pack" goto :eof
set FOLDER=%~p1

set PWD=%CD%
pushd %FOLDER%
echo Unpacking %~nx1
%PWD%\bin\unpack200.exe %~nx1 %~n1.jar
del %~nx1
popd

goto :eof

晚会有点晚了

这是一个用powershell编写的提取器

param($installdir)
$list=$(gci-Recurse./$installdir/*.pack)|%{
返回@{
source=$\u.FullName
父项=$\目录.FullName
target=“$($.Directory.FullName)\$([io.path]::GetFileNameWithoutExtension($.Name)).jar”
}
} | %{
$result=$(解压200$\源$\目标)
$\结果=$result
返回$_
}
写入主机$(转换为Json$列表)

在7zip解压的文件夹中,与bin和lib文件夹相同,下面的命令当然在Windows中发挥了“魔力”。谢谢


对于('dir/s/b*.pack')中的/f%f,请执行bin\unpack200.exe%~pf%~nxf%~pf%~nf.jar

我怀疑这可能与T和C不符s@Abel:您只需使用7-Zip打开安装程序-我以前已经这样做过。谢谢,我尝试过这一个,并且在JDK 6上工作得非常好,但是对于JDK 5,我得到的文件是无用的,我确信安装程序需要以某种方式处理这些文件,以便将其转换为有用的文件。谢谢,这就是我决定要做的事=)这就是我的做法。我有自己的JDK zip/install,它不需要安装,并且包括我需要的第三方库,比如JCE。如果您不解包rt.pack(运行时),那么就根本无法使用新的jvm,因为类加载器找不到对象类。非常感谢!但是,我将其更改为使用JDK存档中的unpack200.exe,并在转换后删除包文件:EDIT:moved as answer以获得正确的缩进。您最后一次以这种方式提取/安装的JDK是什么?抱歉,我不记得了。然而,由于这个漏洞,我现在使用7z先解压缩JDK安装程序,然后再解压缩tools.zip。然后我调用解包并重命名文件。与此同时,我发现一条最近更新过的指令:;它描述了这些天在哪里可以找到tools.zip。我可以确认这是有效的。问题是,里面只有一些无用的压缩数据文件,而不是我想要的src.zip(1.8.1u131:)
@echo off

setlocal enableextensions
for /r %%f in (*) do call :process %%f
endlocal
goto :eof

:process
if NOT "%~x1" == ".pack" goto :eof
set FOLDER=%~p1

set PWD=%CD%
pushd %FOLDER%
echo Unpacking %~nx1
%PWD%\bin\unpack200.exe %~nx1 %~n1.jar
del %~nx1
popd

goto :eof