Minecraft Launcher:无法获得主要方法需要帮助
Minecraft Launcher: Cannot get main method need assistance
我正在尝试为 Minecraft 1.7.10 创建一个简单的启动器。但是,当我尝试从 net.minecraft.client.main.Main
获取主要方法时,出现错误:
java.lang.ClassNotFoundException: joptsimple/OptionSpec.
我已经尝试研究其他启动器的代码,看看他们是如何解决这个问题的,但我看不出有什么不同。
public Method getMainMethod() throws NoSuchMethodException, SecurityException,
ClassNotFoundException, IOException,
InstantiationException, IllegalAccessException
{
return new URLClassLoader(new URL[] {new URL("file:///" +
MinecraftUtil.getBinFolder() + "/minecraft.jar")},
URLClassLoader.getSystemClassLoader().getParent())
.loadClass("net.minecraft.client.main.Main")
.getMethod("main", String[].class);
}
这应该从 minecraft.jar 获取主要方法并允许我调用它,但如果我什至尝试加载 class 它会吐出 joptsimple/optionspec 错误。
你还需要在这个 class 加载器中包含 Minecraft 需要的所有库,如果你查看典型的 Minecraft 安装,你会注意到 \libraries
文件夹有很多子目录和其他 .jar 在它们的末尾,您需要加载所有需要的。
Minecraft 使用配置文件来跟踪所需的库,应该有 versions
文件夹,每个版本都包含该版本的 .jar 和 .json 文件,其中包含您需要加载的所有库:
"libraries": [
{
"name": "com.mojang:patchy:1.1",
"downloads": {
"artifact": {
"size": 15817,
"sha1": "aef610b34a1be37fa851825f12372b78424d8903",
"path": "com/mojang/patchy/1.1/patchy-1.1.jar",
"url": "https://libraries.minecraft.net/com/mojang/patchy/1.1/patchy-1.1.jar"
}
}
},
并且您可以找到 .jar 文件的大小、sha1 校验和、库目录中的路径,如果丢失,link 可以下载它。所以你可以实现启动器来下载丢失的库。
您可以使用这些现有的配置文件,或者只是制作您自己的系统来跟踪您需要包含在 class 加载程序中的库。
请注意,配置文件还包括您需要传递给 Minecraft main 方法以 运行 游戏的所有参数 - 您也需要这些。
我正在尝试为 Minecraft 1.7.10 创建一个简单的启动器。但是,当我尝试从 net.minecraft.client.main.Main
获取主要方法时,出现错误:
java.lang.ClassNotFoundException: joptsimple/OptionSpec.
我已经尝试研究其他启动器的代码,看看他们是如何解决这个问题的,但我看不出有什么不同。
public Method getMainMethod() throws NoSuchMethodException, SecurityException,
ClassNotFoundException, IOException,
InstantiationException, IllegalAccessException
{
return new URLClassLoader(new URL[] {new URL("file:///" +
MinecraftUtil.getBinFolder() + "/minecraft.jar")},
URLClassLoader.getSystemClassLoader().getParent())
.loadClass("net.minecraft.client.main.Main")
.getMethod("main", String[].class);
}
这应该从 minecraft.jar 获取主要方法并允许我调用它,但如果我什至尝试加载 class 它会吐出 joptsimple/optionspec 错误。
你还需要在这个 class 加载器中包含 Minecraft 需要的所有库,如果你查看典型的 Minecraft 安装,你会注意到 \libraries
文件夹有很多子目录和其他 .jar 在它们的末尾,您需要加载所有需要的。
Minecraft 使用配置文件来跟踪所需的库,应该有 versions
文件夹,每个版本都包含该版本的 .jar 和 .json 文件,其中包含您需要加载的所有库:
"libraries": [
{
"name": "com.mojang:patchy:1.1",
"downloads": {
"artifact": {
"size": 15817,
"sha1": "aef610b34a1be37fa851825f12372b78424d8903",
"path": "com/mojang/patchy/1.1/patchy-1.1.jar",
"url": "https://libraries.minecraft.net/com/mojang/patchy/1.1/patchy-1.1.jar"
}
}
},
并且您可以找到 .jar 文件的大小、sha1 校验和、库目录中的路径,如果丢失,link 可以下载它。所以你可以实现启动器来下载丢失的库。
您可以使用这些现有的配置文件,或者只是制作您自己的系统来跟踪您需要包含在 class 加载程序中的库。
请注意,配置文件还包括您需要传递给 Minecraft main 方法以 运行 游戏的所有参数 - 您也需要这些。