我是一个长期从事 Java 工作的人,并且知道运行带有主类的 JAR 的方法MANIFEST.MF
Jar 中的文件很简单:
java -jar theJar.jar
我用它来启动 Fabric3 服务器(包含在bin/server.jar
在其标准分布中)。我注意到,当我从发行版 tarball 中解压它时,它被标记为可执行文件。一时兴起,我尝试了
./server.jar
from my bash
命令行 (bash
Ubuntu 10.10 中的版本 4.1.5),你瞧,服务器启动了,就像我输入了正常的一样java -jar ...
命令。 JAR 的结构与普通 JAR 类似;我做了一个head
上面没有#!
命令在前几个字节中,所以bash
不应该神奇地知道用它启动 Java VM,对吗?或者有这个版本的bash
是否能够正确地使用正确的清单启动 JAR?好奇心想知道……
这可能根本不是 bash 的功能。如果您正在运行 linux(正如您所标记的那样),您可能有binfmt_misc
内核模块,当您尝试执行程序时,它会发挥一些作用。基本上,它的作用是将 linux 可以执行的二进制格式从 elf 扩展到还包括一些用户定义的格式,并提供足够的指令来运行它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)