简体   繁体   English

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

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

I want to code a Minecraft mod in 1.16.3.我想在 1.16.3 中编写一个 Minecraft mod。 I have already make a mod in 1.12.2 but I didn't have this problem.我已经在 1.12.2 中制作了一个 mod,但我没有这个问题。 I just download the 1.16.3 forge Mdk and build it for eclipse (with 'gradlew eclipse' in cmd) but when I try to run the mod (with 'runClient.launch').我只是下载 1.16.3 forge Mdk 并为 Eclipse 构建它(在 cmd 中使用“gradlew eclipse”)但是当我尝试运行 mod 时(使用“runClient.launch”)。 It gives an error:它给出了一个错误:

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

I tried to modify the main file and packages to support the not necessary code but when I start.我尝试修改主文件和包以支持不必要的代码,但是当我开始时。 It gives me the same error.它给了我同样的错误。

My main file:我的主文件:

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");
//        }
//    }
}

And the stack trace:和堆栈跟踪:

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

It seems the Minecraft code you are using depends on the Nashorn scripting engine.您使用的 Minecraft 代码似乎取决于 Nashorn 脚本引擎。 Nashorn was removed from the JDK in Java 15, which it seems you are running. Nashorn已从 Java 15 中的 JDK中删除,您似乎正在运行它。

Downgrade to JDK 14 or an earlier version.降级到 JDK 14 或更早版本。

Solution解决方案


  • Nashorn was removed from the JDK in Java 15 ( https://openjdk.java.net/jeps/372 ) Nashorn 在 Java 15 ( https://openjdk.java.net/jeps/372 ) 中从 JDK 中移除
  • You need to launch with Java 1.8 (to avoid UnsupportedClassVersionError)您需要使用 Java 1.8 启动(以避免 UnsupportedClassVersionError)
  • So you have to :所以你必须:
    1. Go to Project Properties >> Java compiler >> Compiler >> compilance level and modify to Java SE - 1.8转到Project Properties >> Java compiler >> Compiler >> compilance level并修改为 Java SE - 1.8
    2. Modify your path (put jdk1.8)修改你的路径(放jdk1.8)
    3. And if that not works, go to Preferences >> Java >> Installed JREs and Preferences >> Java >> Installed JREs >> Execution Environments如果这不起作用,请转到Preferences >> Java >> Installed JREs and Preferences >> Java >> Installed JREs >> Execution Environments

Thanks to @LukeWoodward !!感谢@LukeWoodward!

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

相关问题 Nashorn java.lang.NoClassDefFoundError:jdk / nashorn / api / scripting / JSObject - Nashorn java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/JSObject 独立 Nashorn 给出 java.lang.NoClassDefFoundError: jdk/dynalink/RelinkableCallSite using java 11 - Standalone Nashorn giving java.lang.NoClassDefFoundError: jdk/dynalink/RelinkableCallSite using java 11 java.lang.NoClassDefFoundError:在Rest API JAVA中 - java.lang.NoClassDefFoundError: In Rest API JAVA java.lang.NoClassDefFoundError:JDK 1.7中的java / awt / Desktop - java.lang.NoClassDefFoundError: java/awt/Desktop in JDK 1.7 Java 9 HttpClient java.lang.NoClassDefFoundError:jdk / incubator / http / HttpClient - Java 9 HttpClient java.lang.NoClassDefFoundError: jdk/incubator/http/HttpClient 带有AsyncHttpClient的java.lang.NoClassDefFoundError-API 19 - java.lang.NoClassDefFoundError with AsyncHttpClient - API 19 运行 jdk 11 时出现 java.lang.NoClassDefFoundError - java.lang.NoClassDefFoundError when running jdk 11 JDK8:“java.lang.NoClassDefFoundError:javax/xml/ws/Service” - JDK8: "java.lang.NoClassDefFoundError: javax/xml/ws/Service" java.lang.NoClassDefFoundError - java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError - java.lang.NoClassDefFoundError
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM