运行程序打包在sh文件中


0

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

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

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

Answers:


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文件的事实 中央数据结构 结束了。该 zip / jar 文件阅读器简单介绍一下“垃圾数据”shell脚本。

通常,zip文件中的第一件事是zip条目,可以通过其签名轻松识别。但不一定是zip文件以zip条目开头的情况,并且zip规范不要求。

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


Java进程可以直接从sh文件中读取吗?
misha nesterenko

@mishanesterenko这不是一个 .sh 文件。这是一个组合 .sh / .jar 文件。看我编辑的答案。
Daniel Beck
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.