我尝试为我的JavaFx项目使用spring RestTemplate,该项目是用Java 17创建的。即使在module-info.java文件中添加了spring.web模块,当应用程序用javafx:jlink构建时,也会出现错误,如下所示。
Error: automatic module cannot be used with jlink: spring.web from file:///C:/Users/mafei/.m2/repository/org/springframework/spring-web/6.1.1/spring-web-6.1.1.jar
字符串
如何解决这个问题?
1条答案
按热度按时间jaxagkaj1#
jlink
无法链接自动模块(自Java 21起)正如纳曼在评论中指出的那样:
您必须等待作者为正在使用的库发布JPMS模块
这是因为
jlink
不支持链接automatic modules。备选案文
有关其中一些选项的信息,请参阅相关问题:
使用Spring时(自Spring 6.1起)
不幸的是,对于Spring模块,等待Spring开发人员为他们的软件定义带有
module-info.java
的JPMS模块可能需要很长时间(或者根本不会发生)。我推荐另一种方法。例如,使您的应用程序非模块化,将JavaFX用作模块(最简单的方法是使用包含JavaFX的JDK,如阿苏尔或Liberica“JDK FX”或“Full JDK”),并使用jpackage打包您的软件(不幸的是,jpackage使用起来比jlink更复杂,无法生成跨平台包,并且生成与jlink不同的打包)。
1为Spring添加jlink支持的跟踪问题(通过为框架定义模块信息文件)是Declare Spring modules with JDK 9 module metadata SPR-13501 #18079。这是2015年9月24日提出的Spring框架的当前开放问题,也是6.x backlog的一部分(因此目前没有计划在即将发布的版本中交付)