8

组件详细信息- 使用IntelliJ IDEA 2017.1 CEjdk-9-ea+154

主要() -

Set<String> set2 = Set.of("a", "b", "c");
set2.forEach(System.out::println);

模块信息.java

module collection {
    requires java.base;
}

日志-

Error occurred during initialization of VM
java.lang.RuntimeException: Package jdk.internal.jimage.decompressor in both module jrt.fs and module java.base
    at jdk.internal.module.ModuleBootstrap.fail(java.base@9-ea/ModuleBootstrap.java:699)
    at jdk.internal.module.ModuleBootstrap.boot(java.base@9-ea/ModuleBootstrap.java:329)
    at java.lang.System.initPhase2(java.base@9-ea/System.java:1928)

对 VM 初始化的实现持怀疑态度,我的问题是我没有包含模块jrt.fs- 图片来自哪里?如何调试此类模块的包含/排除?如何进一步解决当前的异常?

4

10 回答 10

9

我在 Arch Linux 下遇到了同样的错误。该软件包java-openjfx将其库安装到 的 lib 目录中openjdk,这似乎会导致问题。我找到了一种解决方法,不是添加整个 lib 目录,而是只添加所需的库。

在项目结构 > 库 > + > Java > /usr/lib/jvm/default/lib > 选择需要的库(持有 ctrl) 应该看起来像这样

然后在运行配置中相应地设置 VM 选项

    --module-path /usr/lib/jvm/java-14-openjdk/lib/javafx.base.jar:/usr/lib/jvm/java-14-openjdk/lib/javafx.controls.jar:/usr/lib/jvm/java-14-openjdk/lib/javafx.graphics.jar --add-modules=javafx.controls

对于我的项目,只需将控件添加为模块就足够了,但需要基础路径和图形才能使其运行。

于 2020-07-14T15:56:45.657 回答
8

我在 Manjaro Linux 上遇到了同样的问题,而它在 Windows 上运行良好。查看差异,很明显 javafx 11 包安装到 /lib/jvm/java-11-openjdk/lib 中,然后我将其设置为 PATH_TO_FX。这似乎是问题所在,因为 jrt-fs.jar 在同一个文件夹中。

我将所有文件从 fx 移动到一个单独的文件夹,然后将其设置为 PATH_TO_FX。现在它工作正常。

于 2019-08-13T12:32:20.603 回答
7

$JAVA_HOME/lib/jrt-fs.jar 包含编译到 JDK 8 的“jrt”文件系统提供程序的副本。它适用于在 JDK 8 上运行但需要访问 JDK 9 运行时映像的 IDE 等工具。

从异常中可以看出,这个 JAR 文件,或者可能是 $JAVA_HOME/lib,已经被错误地放在模块路径上。在顶级目录中不包含 module-info.class 的 JAR 文件被视为自动模块,因此这就是异常在消息中包含“module jrt.fs”的原因。该异常基本上只是意味着由于将 jrt-fs.jar 放在模块路径上,您最终得到了两个包含 jdk.internal.jimage.decompressor 包(和许多其他包)的模块。

于 2017-03-25T08:52:49.223 回答
4

要解决此问题,请按照以下步骤操作。1-右键单击您的班级。2 - 运行 AS-> 运行配置 3. 单击 main -> 单击 Browse 选项并在项目中选择您的项目名称。单击“应用”按钮,处理后单击“运行”按钮。

于 2020-06-12T10:28:44.360 回答
3

尝试从jdk9的目录中删除jrt-fs.jar。我在 IntelliJ IDEA 的项目结构中做到了,对我来说效果很好

于 2017-03-24T17:11:16.413 回答
3

在 Eclipse 中,更改 Eclipse 工作区或删除工作区文件夹中的 .metadata 文件夹对我有用。

我不知道是什么修复了它,但如果我不得不猜测它可能是 .metadata 文件夹中的某些东西导致了异常。

于 2019-12-12T17:34:53.593 回答
2

我在 Spring Toolsuite 4 中遇到了这个问题,元数据包含有关工作区中当前项目的信息,以及常见的 Eclipse 设置,如字体、代码样式、运行配置设置,有时还包含有关使用的模块的信息、Eclipse 插件和 Eclipse 日志文件以用于 Eclipse 日志错误, ETC。

它不包含有价值的项目信息。

如果手动删除或更改此文件夹,eclipse 会将此目录视为一个新的工作区。您必须再次导入现有项目,然后您就完成了。

如果您想保留您的字体、代码样式等,您可以为新工作区导出/导入这些首选项或创建 .metadata 的备份。

在我的情况下,当我删除.metadata 文件夹,再次导入项目,设置运行配置并且一切开始工作时,它适用于模块 jrt.fs 和模块 java.base 中的 Package jdk.internal.jimage.decompressor的上述问题。

于 2020-04-01T05:22:48.927 回答
1

删除 .metadata 文件夹,然后重新启动 Eclipse。

于 2020-03-12T06:45:55.997 回答
0

我在 Mac Eclipse 版本上遇到了同样的问题:2020-09 (4.17.0)

每当我尝试运行现有的配置时,我都会收到该错误。我尝试了各种解决方法,但没有任何效果。

所以我创建了一个新的配置:

  1. 打开包含 main() 方法的文件。
  2. 从运行菜单中选择“运行方式 >> Java 应用程序”

那运行正常。这样做的好处是它不会修改您的 JDK 安装。

于 2020-10-30T21:41:29.903 回答
-1

删除.metadata文件夹中的workspace文件夹对我有用。

(我在 Eclipse 2021-06 (4.20.0) 中使用 Windows)

于 2022-02-28T09:32:56.770 回答