繁体   English   中英

java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory

[英]java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory

我想在 1.16.3 中编写一个 Minecraft mod。 我已经在 1.12.2 中制作了一个 mod,但我没有这个问题。 我只是下载 1.16.3 forge Mdk 并为 Eclipse 构建它(在 cmd 中使用“gradlew eclipse”)但是当我尝试运行 mod 时(使用“runClient.launch”)。 它给出了一个错误:

java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory。

我尝试修改主文件和包以支持不必要的代码,但是当我开始时。 它给了我同样的错误。

我的主文件:

package fr.luzog78.newmod;

import net.minecraft.block.Blocks;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@Mod("newmod")
public class NewMod {
    private static final Logger LOGGER = LogManager.getLogger();

    public NewMod() {
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
        FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void setup(final FMLCommonSetupEvent event) {
        LOGGER.info("HELLO FROM PREINIT");
        LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName());
    }

    private void doClientStuff(final FMLClientSetupEvent event) {
    }

//    @SubscribeEvent
//    public void onServerStarting(FMLServerStartingEvent event) {
//        // do something when the server starts
//        LOGGER.info("HELLO from server starting");
//    }
//
//    // You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD
//    // Event bus for receiving Registry Events)
//    @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD)
//    public static class RegistryEvents {
//        @SubscribeEvent
//        public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) {
//            // register a new block here
//            LOGGER.info("HELLO from Register Block");
//        }
//    }
}

和堆栈跟踪:

Exception in thread "main" [13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]: java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.coremod.CoreModEngine.loadCoreMod(CoreModEngine.java:48)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.coremod.CoreModProvider.addCoreMod(CoreModProvider.java:12)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.fml.loading.LoadingModList.addCoreMods(LoadingModList.java:85)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.fml.loading.moddiscovery.ModDiscoverer.discoverMods(ModDiscoverer.java:129)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.fml.loading.FMLLoader.beginModScan(FMLLoader.java:213)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.fml.loading.FMLServiceProvider.runScan(FMLServiceProvider.java:107)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at cpw.mods.modlauncher.TransformationServiceDecorator.runScan(TransformationServiceDecorator.java:114)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at cpw.mods.modlauncher.TransformationServicesHandler.lambda$runScanningTransformationServices$8(TransformationServicesHandler.java:115)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1766)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at cpw.mods.modlauncher.TransformationServicesHandler.runScanningTransformationServices(TransformationServicesHandler.java:116)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:63)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at cpw.mods.modlauncher.Launcher.run(Launcher.java:76)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at cpw.mods.modlauncher.Launcher.main(Launcher.java:66)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1057]: Caused by: java.lang.ClassNotFoundException: jdk.nashorn.api.scripting.NashornScriptEngineFactory
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1057]:   at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1057]:   at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1057]:   at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
[13:16:47] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1057]:   ... 33 more

您使用的 Minecraft 代码似乎取决于 Nashorn 脚本引擎。 Nashorn已从 Java 15 中的 JDK中删除,您似乎正在运行它。

降级到 JDK 14 或更早版本。

解决方案


  • Nashorn 在 Java 15 ( https://openjdk.java.net/jeps/372 ) 中从 JDK 中移除
  • 您需要使用 Java 1.8 启动(以避免 UnsupportedClassVersionError)
  • 所以你必须:
    1. 转到Project Properties >> Java compiler >> Compiler >> compilance level并修改为 Java SE - 1.8
    2. 修改你的路径(放jdk1.8)
    3. 如果这不起作用,请转到Preferences >> Java >> Installed JREs and Preferences >> Java >> Installed JREs >> Execution Environments

感谢@LukeWoodward!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM