maven Itext7 Jars未正确加载到javafx项目中

w41d8nur  于 2023-01-12  发布在  Maven
关注(0)|答案(1)|浏览(378)

我在pom.xml中有这个依赖项

<dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.1.18</version>
        <type>pom</type>
    </dependency>

在我的module-info.java文件中,我有以下内容

requires transitive kernel;

这将生成以下警告:“自动模块'kernel'的名称不稳定,它是从模块的文件名派生的。”
我可以做些什么来消除这个警告?
我试着把它改成

requires transitive com.itextpdf.kernel;

但随后我得到了以下错误,“com.itextpdf.kernel无法解析为模块”
我尝试了一堆其他类似的代码行,但都不起作用。为了删 debugging 误/警告,我可以将代码更改为什么?

fslejnso

fslejnso1#

itext7目前不是模块化的。
您可以联系开发人员,让他们将其模块化。
与此同时,像这样复杂的非模块化系统很难在模块化项目中使用,即使你通过自动模块系统或者通过moditect之类的东西来破解模块信息,它也几乎破坏了模块化项目的任何潜在好处,而且它以一种从未设计过的方式运行软件。
因此,让您的项目非模块化:

  • 从你的项目中删除module-info.java.
  • 使用以下任一方法获取javafx模块:
  • VM参数指向将它们添加到模块路径OR
  • 来自包含它们的JRE/JDK发行版,例如BellSoft Liberica "完整JDK"或Azul Zulu "JDK FX"。

有关使用非模块化JavaFX项目的详细说明,请参见入门文档,网址为:openjfx.io.
我不知道"非模块化"是什么意思,但如果itext7网站提供了maven依赖项来合并到pom.xml中,这怎么可能是真的呢?
非模块化意味着在项目中不定义www.example.com。module-info.java in your project.
阅读understanding modules和我在www.example.com上链接的文档,了解JavaFX模块系统的基础知识以及如何在JavaFX应用程序中使用它。openjfx.io to understand the basics of the JavaFX module system and how it can be used in a JavaFX application.
Maven modulesJava Platform modules是不同的东西,它们有相同的名称"module",但一个是构建时定义,另一个是运行时定义。此外,maven dependency只是一个依赖项,它不是一个Maven模块或Java平台模块,尽管您可以依赖于由Maven模块构建的工件,并且可以通过Java平台模块系统执行这些工件(如果它们与它兼容)。
itext7不是作为Java平台模块构建的。该软件没有module-info.java,也没有为自己定义自动模块名称。鉴于您的软件依赖于非模块化软件,您的软件也不应该是模块化的(在我看来)。

相关问题