我在我的代码中使用了Pair数据结构,它在本地运行良好。但是在Jenkins build中,我遇到了这个问题:
error: package javafx.util does not exist import javafx.util.Pair;
bfrts1fy1#
您的代码使用JavaFX附带的Pair类。与Swing不同,JavaFX从未成为Java SE的标准组成部分。您必须使JavaFX的实现可用于您的应用。看起来👉您的本地机器有JavaFX的实现,但Jenkins机器没有,您需要在Jenkins机器上获得JavaFX的实现。OpenJDK项目的OpenJFX子项目是JavaFX的开源实现,Gluon公司领导OpenJFX,与Oracle合作。一种解决方案是将OpenJFX捆绑为应用的一部分,常见的方法是配置依赖项管理工具,如Apache Maven或Gradle。另一种解决方案是使用与JavaFX实现捆绑在一起的JDK。JDK产品的供应商可以自由捆绑JavaFX的实现。甲骨文选择在其商业Java 8产品的早期版本中这样做。👉该公司停止捆绑Java 8的后续版本。我猜您的本地计算机有Java 8的早期版本,而Jenkins计算机有Java 8的后续版本,分别捆绑了JavaFX和没有捆绑JavaFX。目前至少有两家JDK供应商将OpenJFX与其JDK产品的某些版本捆绑在一起:
Pair
当然,走这条路意味着您还必须将OpenJFX安装到应用的部署计算机上。正如所评论的,如果您不是真的在制作JavaFX应用程序,那么仅仅为Pair类绑定OpenJFX就有点过头了。有些人使用map入口接口和实现作为一个配对类,参见Map.Entry接口,其中包含可变和不可变的具体类的链接。我建议你自己卷。Java 16+中最简单的DIY实现是record。
Map.Entry
record PairOfInts ( int x , int y ) {}
提示:除了嵌套在类中或作为自己的类独立之外,您还可以在方法中本地声明record。
record
1条答案
按热度按时间bfrts1fy1#
您的代码使用JavaFX附带的
Pair
类。与Swing不同,JavaFX从未成为Java SE的标准组成部分。您必须使JavaFX的实现可用于您的应用。看起来👉您的本地机器有JavaFX的实现,但Jenkins机器没有,您需要在Jenkins机器上获得JavaFX的实现。
OpenJDK项目的OpenJFX子项目是JavaFX的开源实现,Gluon公司领导OpenJFX,与Oracle合作。
一种解决方案是将OpenJFX捆绑为应用的一部分,常见的方法是配置依赖项管理工具,如Apache Maven或Gradle。
另一种解决方案是使用与JavaFX实现捆绑在一起的JDK。
JDK产品的供应商可以自由捆绑JavaFX的实现。
甲骨文选择在其商业Java 8产品的早期版本中这样做。👉该公司停止捆绑Java 8的后续版本。我猜您的本地计算机有Java 8的早期版本,而Jenkins计算机有Java 8的后续版本,分别捆绑了JavaFX和没有捆绑JavaFX。
目前至少有两家JDK供应商将OpenJFX与其JDK产品的某些版本捆绑在一起:
当然,走这条路意味着您还必须将OpenJFX安装到应用的部署计算机上。
正如所评论的,如果您不是真的在制作JavaFX应用程序,那么仅仅为
Pair
类绑定OpenJFX就有点过头了。有些人使用map入口接口和实现作为一个配对类,参见
Map.Entry
接口,其中包含可变和不可变的具体类的链接。我建议你自己卷。
Java 16+中最简单的DIY实现是record。
提示:除了嵌套在类中或作为自己的类独立之外,您还可以在方法中本地声明
record
。