我在sh文件中下载了jgit并在mingw中运行它。我在进程列表中看到java进程只是用主类和参数启动的
"c:\Program Files\Java\jdk1.6.0_26\bin\java.exe" org.eclipse.jgit.pgm.Main diff master
我检查了解压缩主类的进程当前目录,什么都没有!主类在文件系统中的位置在哪里?
我在sh文件中下载了jgit并在mingw中运行它。我在进程列表中看到java进程只是用主类和参数启动的
"c:\Program Files\Java\jdk1.6.0_26\bin\java.exe" org.eclipse.jgit.pgm.Main diff master
我检查了解压缩主类的进程当前目录,什么都没有!主类在文件系统中的位置在哪里?
Answers:
它设置了路径的类路径 .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文件的事实 中央数据结构 结束了。该 zip
/ jar
文件阅读器简单介绍一下“垃圾数据”shell脚本。
通常,zip文件中的第一件事是zip条目,可以通过其签名轻松识别。但不一定是zip文件以zip条目开头的情况,并且zip规范不要求。
只要shell脚本代码 exit
在实际之前 zip
/ jar
数据启动后,shell不关心文件的shell脚本部分之后的“垃圾数据”。
.sh
文件。这是一个组合 .sh
/ .jar
文件。看我编辑的答案。