我是一个长期的Java人员,并且知道MANIFEST.MF
在Jar 中的文件中引用的主类运行JAR的方法很简单:
java -jar theJar.jar
我正在使用它来启动Fabric3服务器(包含bin/server.jar
在其标准发行版中).我注意到当我从分发tarball解压缩它时,它被标记为可执行文件.一时兴起,我试过了
./server.jar
从我的bash
命令行(bash
Ubuntu 10.10中的4.1.5版本)开始,服务器启动就像我输入了正常的java -jar ...
命令一样.JAR的结构类似于普通的JAR; 我做了一个head
,并且#!
在前几个字节中没有命令,所以bash
不应该神奇地知道用它启动Java VM,对吧?或者这个版本的bash
增长能否正确启动JAR并使用正确的清单?询问心灵想知道......
这根本不是bash的特征.如果您正在运行linux(因为您已经标记了),那么binfmt_misc
当您尝试执行程序时,您可能拥有内核模块,这会产生一些魔力.基本上它的作用是它扩展了linux可以从elf执行的二进制格式,也包括一些用户定义的格式,并有足够的指令来运行它们.