我正在从事一个JavaFX项目,我需要自己生成module-info.class个文件.所以,我想知道如何正确地使用它,并使它与maven一起工作.

我面对这个问题与QR码生成器库zxing.我找不到任何替代的Qr生成器库在java中与module-info.class文件,如果有的话,请注明.

我必须这样做,因为我使用了jlink,它会抛出"自动模块无法与jlink一起使用"的错误.

BREIF解释将非常有帮助:)

注意:我曾try 使用工具注入模块文件,但它抛出错误:无法读取JAR

推荐答案

我已经受够了模块注入器工具,所以我试着用jdep来做.

按照以下简单步骤正确注入模块信息

  1. 将JAR文件(在我的例子中是zxing包,即core-3.4.1.jar)复制到一个文件夹(这里我将其复制到libs文件夹)

  2. 打开cmd并导航到parent folder of libs文件夹.

现在运行命令,

jdeps --ignore-missing-deps --generate-module-info libs libs/core-3.4.1.jar 

它在libs文件夹内或带有模块名称(在我的例子中为com.google.zxing/module-info.java)的文件夹内创建了一个MODULE-info.java.

  1. 复制module-info.java文件并粘贴到libs文件夹中

  2. 运行该命令,

javac --patch-module com.google.zxing=jars/core-3.4.1.jar jars/module-info.java

它将在libs文件夹中生成module-info.class文件.

  1. 现在,要将文件注入到JAR中,请运行
jar uf jars/core-3.4.1.jar -C jars module-info.class

现在,您的模块-info.class文件将被注入到JAR中,您可以在模块化的JavaFX项目中使用它

注:除非别无 Select ,否则不要执行此操作.在我的例子中,我使用zxing库来生成二维码,但我找不到一个好的替代方案.

Java相关问答推荐

在Spring Boot中测试时出现SQL语法错误

有没有一种方法使保持活动设置专用于java.net.http.HttpClient的一个实例

如何在带有Micronaut的YAML中使用包含特殊字符的字符串作为键

确定Java中Math.Ranb()输出的上限

连接Quarkus中的两个异步操作

暂停计时器

测试期间未执行开放重写方法

Spring @Value default无法计算表达式

使用Jolt将字段转换为列表

迁移到Java 17后,日期显示不准确

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

try 在Android Studio中的infoWindow中使用EditText(Java)

在macOS上读取文件会导致FileNotFound,即使文件存在(并且具有权限)

垃圾回收器是否真的删除超出作用域的对象?

将java.util.Date(01.01.0001)转换为java.time.LocalDate将返回29.12.0000

RestTemplate Bean提供OkHttp3ClientHttpRequestFactory不支持Spring Boot 3中的请求正文缓冲

使用@ExceptionHandler的GlobalExceptionHandler还是来自服务器的REST应答的ResponseEntity?

如何在Spring Security中设置一个任何人都可以打开的主页?

使用Java线程进行并行编程

Java 21保护模式的穷尽性