运行sh文件中打包的程序

运行sh文件中打包的程序

我下载了打包在 sh 文件中的 jgit 并在 mingw 中运行它。我在进程列表中看到 java 进程仅使用主类和参数启动

"c:\Program Files\Java\jdk1.6.0_26\bin\java.exe" org.eclipse.jgit.pgm.Main diff master

我检查了进程当前目录中解压的主类,什么也没有!主类位于文件系统的哪里?

答案1

.sh它在文件的第 88 行将类路径设置为文件的路径.sh

this_script=`which "$0" 2>/dev/null`
[ $? -gt 0 -a -f "$0" ] && this_script="$0"
cp=$this_script

[...]

CLASSPATH="$cp"
export CLASSPATH

没有必要“解压”主类。


它使用一个技巧将 shell 脚本和实际的 JAR/ZIP 数据合并到一个文件中:它利用了 ZIP 文件的中央数据结构就到此为止了。/file reader 只是简单地介绍了zip一下jar开头的“垃圾数据”shell 脚本。

通常,zip 文件中的第一部分是 zip 条目,可以通过其签名轻松识别。但 zip 文件不一定以 zip 条目开头,而且 zip 规范也不要求如此。

只要 shell 脚本代码exit在实际的zip/jar数据开始之前,shell 就不会关心文件中 shell 脚本部分之后的“垃圾数据”。

相关内容