【问题标题】:"WARNING: An illegal reflective access operation has occurred" with JDK 8 installed安装了 JDK 8 的“警告:发生了非法反射访问操作”
【发布时间】:2021-01-06 01:42:42
【问题描述】:

我刚买了一台新电脑,并决定开始涉足创建《我的世界》模组。超级新人,不知道自己在做什么,边走边听。

我已经下载了 Open JDK 8,下载了 eclipse,下载并解压了 forge JDK 工具包,将该项目作为现有的 gradle 项目导入,运行 genEclipseRuns gradle 任务,导入了 runClient 和 runServer 的启动配置,确保我是在环境中运行正确版本的 Minecraft,去运行项目,我总是得到以下错误。

2021-01-05 20:37:26,828 main WARN Advanced terminal features are not available in this environment
[20:37:26] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmluserdevserver, --fml.mcpVersion, 20201102.104115, --fml.mcVersion, 1.16.4, --fml.forgeGroup, net.minecraftforge, --fml.forgeVersion, 35.1.4]
[20:37:26] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.0.6+85+master.325de55 starting: java version 15.0.1 by Oracle Corporation
[20:37:27] [main/DEBUG] [cp.mo.mo.LaunchServiceHandler/MODLAUNCHER]: Found launch services [minecraft,fmldevdata,fmldevclient,fmldevserver,fmluserdevserver,fmluserdevdata,testharness,fmlclient,fmluserdevclient,fmlserver]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by cpw.mods.modlauncher.SecureJarHandler (file:/C:/Users/Shelby/.gradle/caches/modules-2/files-2.1/cpw.mods/modlauncher/8.0.6/70155a85837ebb17d36815ab4d12a3b464963df8/modlauncher-8.0.6.jar) to field java.util.jar.Manifest.jv
WARNING: Please consider reporting this to the maintainers of cpw.mods.modlauncher.SecureJarHandler
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[20:37:27] [main/DEBUG] [cp.mo.mo.NameMappingServiceHandler/MODLAUNCHER]: Found naming services : [srgtomcp]
[20:37:27] [main/DEBUG] [cp.mo.mo.LaunchPluginHandler/MODLAUNCHER]: Found launch plugins: [mixin,eventbus,object_holder_definalize,runtime_enum_extender,capability_inject_definalize,accesstransformer,runtimedistcleaner]
[20:37:27] [main/DEBUG] [cp.mo.mo.TransformationServicesHandler/MODLAUNCHER]: Discovering transformation services
...

再进一步,还有这个错误:

...
[20:37:28] [main/DEBUG] [ne.mi.fm.lo.ModSorter/LOADING]: Found 2 mandatory requirements
[20:37:28] [main/DEBUG] [ne.mi.fm.lo.ModSorter/LOADING]: Found 0 mandatory mod requirements missing
Exception in thread "main" [20:37:28] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]: java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory
[20:37:28] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.coremod.CoreModEngine.loadCoreMod(CoreModEngine.java:48)
[20:37:28] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at net.minecraftforge.coremod.CoreModProvider.addCoreMod(CoreModProvider.java:12)
[20:37:28] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:1048]:   at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
...

在过去的一个小时里,我一直在努力让它工作,我已经卸载了所有东西,重新安装了所有东西,重新启动了我的计算机,手动删除了启动配置的 JDK 环境,我能想到的任何事情。

我发现谷歌上的所有其他实例都说我不需要以后安装 JDK,我必须有 JDK 8,但我从来没有其他版本。

任何帮助将不胜感激。

【问题讨论】:

  • 您在“Java > Installed JREs”页面的首选项中告诉 Eclipse 不同版本的 Java。确保它知道您的 Java 8。然后查看项目属性中的 Java 构建路径并确保它使用的是 Java 8。

标签: java eclipse java-8 minecraft minecraft-forge


【解决方案1】:

免责声明:我不熟悉为 Minecraft 开发模组。为了提供帮助,我纯粹是从 Java 开发的角​​度来回答的。

  1. 我认为您的第一个“错误”可能无关紧要,它实际上不是错误,而是警告,它不会阻止程序运行。
  2. 第二个错误可能是阻止您继续进行的错误。这是一个例外。它说java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/NashornScriptEngineFactory,这意味着Java 找不到被引用的类定义。我在javadocs 中查找了这个类,上面写着Since: 1.8u40,这意味着它只是在Java 8 更新40 中首次引入。如果你的Java 8 的更新版本低于40,你的代码将无法工作。

您可以通过在命令行输入java -version 来检查您的Java 版本。 在我的系统上,当我运行这个命令时,我得到了

PS C:\> java -version                                                                                                   
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

这告诉我我正在运行 Java 8 (1.8) 更新 261

另一件事是您提到您使用的是 Open JDK 8。我安装的是 Oracle Java,我下载了 here。我不确定NashornScriptEngineFactory 在您的Open JDK 版本中是否可用,或者即使它完全可用,但是,这个page 表明它已经实现。我不确定,但我认为它说您可能需要 OpenJDK 9,但我不确定。

我希望我能提供一点帮助。祝你好运!

【讨论】:

  • 非常感谢,这让我陷入了一个漫长的兔子洞。如果您有任何其他帮助,我很乐意接受!我发现我一直在使用的版本不是 1.8,而是来自 OpenJDK 的 15(org.eclipse.justj.openjdk.hotspot.jre.15 ...)。我去了 JRE Environments and Compiler 将其更改为 1.8,但它会继续保持在 15。我卸载并重新安装了 eclipse 希望这会有所帮助,但它仍在继续出现。当我没有那么沮丧的时候,我明天会继续!非常感谢,您对版本的一条评论发现了我的全部问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 2018-02-24
  • 2021-08-29
相关资源
最近更新 更多