【问题标题】:How to fix "Unable to derive module descriptor for .jar file" error in fxml如何修复 fxml 中的“无法为 .jar 文件派生模块描述符”错误
【发布时间】:2019-04-24 12:19:14
【问题描述】:

我想从 JAR 库中获取一个图像到我的项目中。

    <graphic>
        <ImageView>
            <Image url="@/toolbarButtonGraphics/general/TipOfTheDay24.gif"/>
        </ImageView>
    </graphic>

我已将库添加到我的模块中,它似乎是正确的,但编译器会抛出错误: 启动层初始化期间发生错误 java.lang.module.FindException:无法为 filepath.jar 派生模块描述符 原因:java.lang.IllegalArgumentException:jlfgr.1.0:无效的模块名称:'1' 不是 Java 标识符。这是我的模块信息文件:

requires javafx.fxml;
requires javafx.controls;

opens sample;

【问题讨论】:

  • 所以你有你的模块化应用程序,并添加了一个依赖项(带有图像的 jar)?这个罐子是jlfgr.1.0.jar?为什么不将 jar 添加到模块信息中?您是否尝试将其重命名为 jlfgr-1.0.jar
  • 重命名文件后添加到模块信息有帮助:) 非常感谢。

标签: java javafx fxml java-module


【解决方案1】:

您似乎没有正确执行这些步骤。添加新库时,首先将其添加到模块中,然后必须将其添加到您的模块中 模块信息文件。

只需在 module-info 中添加一行 ---> requires &lt;package-name&gt;;

例如,我的包名是 graphics-looks.jar ---> requires graphics-looks;

附:在任何地方添加该罐子之前,尝试重命名它并通过从其名称中删除数字和其他字符来给出一个简单的名称。

【讨论】:

  • 我遇到了上述同样的问题,这个解决方案对我有用。在我的 jar 文件中包含数字和特殊字符不允许按原样添加到模块信息文件中。不得不重命名jar文件并使用。
  • 包含数字和特殊字符的包名称使其难以添加到模块信息中。说清楚,对我有用的是摆脱数字和特殊字符。示例:将 jlfgr-1_0 重命名为 jlfgr
【解决方案2】:

切换项目编程语言,在 sdk 和语言级别都设置为版本 11。它对我有用。

【讨论】:

    【解决方案3】:

    根据 Tarun Dadlani 的回答。

    首先,您需要将.jar 文件添加到Modules,如图所示。 Add .jar file to modules

    其次,您需要向module-info 文件添加一个新库,如图所示。 Add a new lib to module-info file

    最后,重命名 .jar 文件以提供简单的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 2019-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多