You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode调试模式启动Minecraft Forge客户端崩溃问题求助

问题:Forge MDK 1.20.4调试启动崩溃,正常runClient可运行

我是Java及Minecraft模组开发新手,使用VSCode Java扩展包,基于Forge MDK 1.20.4开发。执行./gradlew runClient可正常启动客户端,但使用调试配置启动时,Minecraft打开即崩溃。尝试删除调试相关VM参数后,问题仍然存在。

调试配置文件

{
  "type": "java",
  "name": "runClient",
  "request": "launch",
  "mainClass": "net.minecraftforge.bootstrap.ForgeBootstrap",
  "projectName": "Mod",
  "cwd": "${workspaceFolder}\\run",
  "vmArgs": "-Dforge.logging.console.level=debug -Dforge.logging.markers=REGISTRIES -Dforge.enabledGameTestNamespaces=examplemod -Dforge.enableGameTest=true -Djava.net.preferIPv6Addresses=system -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump",
  "args": "--launchTarget forge_userdev_client --version MOD_DEV --assetIndex 12 --assetsDir C:\\Users\\conta\\.gradle\\caches\\forge_gradle\\assets --gameDir .",
  "env": {
    "MOD_CLASSES": "${workspaceFolder}\\build\\sourcesSets\\main",
    "MCP_MAPPINGS": "official_1.20.4"
  },
  "preLaunchTask": "prepareRunClientCompile"
}

崩溃日志

Exception in thread "main" java.lang.reflect.InvocationTargetException 
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at net.minecraftforge.bootstrap.Bootstrap.start(Bootstrap.java:48)
        at net.minecraftforge.bootstrap.ForgeBootstrap.main(ForgeBootstrap.java:18)
Caused by: com.electronwill.nightconfig.core.io.ParsingException: Invalid bare key: ${mod_id}
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.toml@3.6.4/com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:175)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.toml@3.6.4/com.electronwill.nightconfig.toml.TableParser.parseTableName(TableParser.java:111)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.toml@3.6.4/com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:51)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.toml@3.6.4/com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.core@3.6.4/com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.core@3.6.4/com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.core@3.6.4/com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202)
        at SECURE-BOOTSTRAP/com.electronwill.nightconfig.core@3.6.4/com.electronwill.nightconfig.core.file.WriteAsyncFileConfig.load(WriteAsyncFileConfig.java:138)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.ModFileParser.modsTomlParser(ModFileParser.java:43)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.ModFileParser.readModList(ModFileParser.java:30)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.ModFile.<init>(ModFile.java:71)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.ModFile.<init>(ModFile.java:60)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.AbstractModProvider.createMod(AbstractModProvider.java:52)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.ClasspathLocator.scanMods(ClasspathLocator.java:75)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:80)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:154)
        at SECURE-BOOTSTRAP/net.minecraftforge.fmlloader@1.20.4-49.0.30/net.minecraftforge.fml.loading.FMLServiceProvider.beginScanning(FMLServiceProvider.java:58)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:98)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$7(TransformationServicesHandler.java:96)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1779)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
        at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
        at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
        at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
        at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:98)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:49)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.Launcher.run(Launcher.java:86)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.Launcher.main(Launcher.java:73)
        at SECURE-BOOTSTRAP/cpw.mods.modlauncher@10.1.2/cpw.mods.modlauncher.BootstrapEntry.main(BootstrapEntry.java:17)
        at net.minecraftforge.bootstrap@2.0.0/net.minecraftforge.bootstrap.Bootstrap.moduleMain(Bootstrap.java:97)
        ... 6 more

问题分析与解决

崩溃日志明确指向Invalid bare key: ${mod_id},说明项目中src/main/resources/META-INF/mods.toml文件存在未替换的占位符${mod_id}。Forge加载模组时会解析该TOML文件,未替换的占位符不符合TOML语法规则,导致解析失败崩溃。

解决步骤:

  • 找到项目中的src/main/resources/META-INF/mods.toml文件
  • 将所有${mod_id}替换为自定义模组ID(要求:仅包含小写字母、数字和下划线,例如my_first_mod)
  • 保存文件后重新启动调试

内容的提问来源于stack exchange,提问作者Dimed 1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:05:53