javafx.util.Pair在本地运行但不在jenkins中运行

uxh89sit  于 2023-02-18  发布在  Jenkins
关注(0)|答案(1)|浏览(524)

我在我的代码中使用了Pair数据结构,它在本地运行良好。但是在Jenkins build中,我遇到了这个问题:

error: package javafx.util does not exist
import javafx.util.Pair;
bfrts1fy

bfrts1fy1#

您的代码使用JavaFX附带的Pair类。与Swing不同,JavaFX从未成为Java SE的标准组成部分。您必须使JavaFX的实现可用于您的应用。
看起来👉您的本地机器有JavaFX的实现,但Jenkins机器没有,您需要在Jenkins机器上获得JavaFX的实现。
OpenJDK项目的OpenJFX子项目是JavaFX的开源实现,Gluon公司领导OpenJFX,与Oracle合作。
一种解决方案是将OpenJFX捆绑为应用的一部分,常见的方法是配置依赖项管理工具,如Apache MavenGradle
另一种解决方案是使用与JavaFX实现捆绑在一起的JDK
JDK产品的供应商可以自由捆绑JavaFX的实现。
甲骨文选择在其商业Java 8产品的早期版本中这样做。👉该公司停止捆绑Java 8的后续版本。我猜您的本地计算机有Java 8的早期版本,而Jenkins计算机有Java 8的后续版本,分别捆绑了JavaFX和没有捆绑JavaFX。
目前至少有两家JDK供应商将OpenJFX与其JDK产品的某些版本捆绑在一起:

  • 阿苏尔系统提供 ZuluFX
  • 贝尔软件提供 LibericaFX

当然,走这条路意味着您还必须将OpenJFX安装到应用的部署计算机上。
正如所评论的,如果您不是真的在制作JavaFX应用程序,那么仅仅为Pair类绑定OpenJFX就有点过头了。
有些人使用map入口接口和实现作为一个配对类,参见Map.Entry接口,其中包含可变和不可变的具体类的链接。
我建议你自己卷。
Java 16+中最简单的DIY实现是record

record PairOfInts ( int x , int y ) {}

提示:除了嵌套在类中或作为自己的类独立之外,您还可以在方法中本地声明record

相关问题