我在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 误/警告,我可以将代码更改为什么?
1条答案
按热度按时间fslejnso1#
itext7目前不是模块化的。
您可以联系开发人员,让他们将其模块化。
与此同时,像这样复杂的非模块化系统很难在模块化项目中使用,即使你通过自动模块系统或者通过moditect之类的东西来破解模块信息,它也几乎破坏了模块化项目的任何潜在好处,而且它以一种从未设计过的方式运行软件。
因此,让您的项目非模块化:
module-info.java
.有关使用非模块化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 modules和Java Platform modules是不同的东西,它们有相同的名称"module",但一个是构建时定义,另一个是运行时定义。此外,maven dependency只是一个依赖项,它不是一个Maven模块或Java平台模块,尽管您可以依赖于由Maven模块构建的工件,并且可以通过Java平台模块系统执行这些工件(如果它们与它兼容)。
itext7不是作为Java平台模块构建的。该软件没有
module-info.java
,也没有为自己定义自动模块名称。鉴于您的软件依赖于非模块化软件,您的软件也不应该是模块化的(在我看来)。