没有 META-INF 文件夹,Minecraft 如何运行?

How is Minecraft able to function without a META-INF folder?

我真的不明白这是怎么回事。我现在正在尝试构建 .jar。它由两个类组成:Test.classSayer.class。如果我直接访问 Test.class 或正确打包 Test.jar,它工作得很好,但我可以执行 jar 的唯一方法是用清单 (jar cfm Test.jar manifest Test.class Sayer.class) 打包它.

如果我不这样做,我在尝试 运行 罐子时会收到错误消息:Error: Invalid or corrupt jarfile Test.jar。如果我构建 "good" jar 并删除 META-INF/

也会发生这种情况

这本身就很有意义。毕竟,您需要某种方式告诉 Java 在哪里寻找入口点...对吗?但是你有 Minecraft 的 modding 社区,它通常建议删除 META-INF 以使给定的 mod 工作。

但是,如果没有 META-INF 文件夹,Minecraft 如何运行?根据我的实验,这甚至 不可能 。这个 corrupt minecraft.jar 不应该像它损坏我的 Test.jar 一样吗?

由于 MineCraft 运行 来自启动器,启动器本身可以将适当的启动 class 直接传递给 Java,而不需要 META-INF 文件夹。