>  기사  >  javafx를 사용하는 Java 라이브러리

javafx를 사용하는 Java 라이브러리

WBOY
WBOY앞으로
2024-02-22 12:25:05469검색

php小编苹果为您带来关于使用JavaFX的Java库的问答内容。JavaFX是Java平台上的现代图形用户界面工具包,为开发人员提供了丰富的图形化应用程序开发功能。本文将回答关于JavaFX库的使用问题,帮助您更好地利用JavaFX进行开发。让我们一起来探索JavaFX库的奥秘吧!

问题内容

简单描述:

如何创建一个使用 javafx 窗口的 java 库(该库具有绘图功能,能够创建弹出窗口),而无需扩展 application javafx 类的类,以及如何发送使用我的创建的应用程序作为 fatjar 的库?

完整描述:

我正在开发一个数据帧库,因为我需要一个可序列化的表/数据帧。我没有找到任何实现可序列化的java数据帧库。我的图书馆快完成了。主要逻辑工作完美等。我的库将具有绘图函数来绘制表数据。我已经通过“chart-fx”库实现了此功能。我创建了一个起点类(“具有静态主函数的类”)来测试我的库并查看绘图是否正常。在 intellij ide 中执行时一切运行良好。但是当我在maven中生成一个包(fatjar)并运行生成的jar时,我收到错误:“java.lang.unsupportedoperationexception:无法解析'fa-arrows-alt'”。 我认为在我的库的实现中最奇怪的事情是,当我开发一个库而不是一个应用程序时,我在创建 javafx 应用程序时没有遵循标准线,即创建一个扩展 application 类的类javafx。 相反,我使用静态方法“platform.startup(“这里带有我的javafx代码的lambda函数”)”。 下面是使用“-dprism.verbose=true”选项运行生成的 fatjar 时的控制台日志。

jan. 25, 2024 3:55:38 PM com.sun.javafx.application.PlatformImpl startup
WARNING: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @3b192d32'
Prism pipeline init order: d3d sw
Using Double Precision Marlin Rasterizer
Using dirty region optimizations
Not using texture mask for primitives
Not forcing power of 2 sizes for textures
Using hardware CLAMP_TO_ZERO mode
Opting in for HiDPI pixel scaling
Prism pipeline name = com.sun.prism.d3d.D3DPipeline
Loading D3D native library ...
        succeeded.
D3DPipelineManager: Created D3D9Ex device
Direct3D initialization succeeded
(X) Got class = class com.sun.prism.d3d.D3DPipeline
Initialized prism pipeline: com.sun.prism.d3d.D3DPipeline
Maximum supported texture size: 16384
Maximum texture size clamped to 4096
OS Information:
        Windows version 10.0 build 19042
D3D Driver Information:
        NVIDIA GeForce GT 710
        \\.\DISPLAY1
        Driver nvldumdx.dll, version 27.21.14.5671
        Pixel Shader version 3.0
        Device : ven_10DE, dev_128B, subsys_118B10DE
        Max Multisamples supported: 4
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
java.lang.UnsupportedOperationException: Cannot resolve 'fa-arrows-alt'
        at org.kordamp.ikonli.AbstractIkonResolver.resolve(AbstractIkonResolver.java:61)
        at org.kordamp.ikonli.javafx.IkonResolver.resolve(IkonResolver.java:73)
        at org.kordamp.ikonli.javafx.FontIcon.setIconLiteral(FontIcon.java:251)
        at org.kordamp.ikonli.javafx.FontIcon.<init>(FontIcon.java:92)
        at io.fair_acc.chartfx.plugins.Zoomer.getZoomInteractorBar(Zoomer.java:421)
        at io.fair_acc.chartfx.plugins.Zoomer.<init>(Zoomer.java:148)
        at io.fair_acc.chartfx.plugins.Zoomer.<init>(Zoomer.java:252)
        at io.fair_acc.chartfx.plugins.Zoomer.<init>(Zoomer.java:243)
        at sst.visualization.chartFxBased.LineChart.lambda$plot$1(LineChart.java:85)
        at com.sun.javafx.application.PlatformImpl.lambda$startup$5(PlatformImpl.java:294)
        at com.sun.glass.ui.Application.invokeAndWait(Application.java:470)
        at com.sun.javafx.tk.quantum.QuantumToolkit.runToolkit(QuantumToolkit.java:377)
        at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$startup$10(QuantumToolkit.java:290)
        at com.sun.glass.ui.Application.lambda$run$1(Application.java:155)
        at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:185)
        at java.base/java.lang.Thread.run(Thread.java:1583)
 vsync: true vpipe: true

我尝试过的事情:

1 - 使用“--module-path”和“--add-modules”运行我的程序。完整控制台命令:“java --module-path c:/javafx-jmods --add-modules javafx.base -jar sst-0.0.1.0-withdependency.jar”。将“javafx.base”更改为另一个模块名称时,我收到“module javafx.base not found”错误。

2 - 将“javafx-maven-plugin”添加到我的 pom.xml 中。好像没有效果。

我的想法:

我记得几天前我创建了一个 javafx 应用程序,它扩展了已运行的应用程序类 i。

替代问题:

因为我对“platform.startup”的用法感到奇怪,所以告诉我这是否是创建不是应用程序的javafx图的正确方法(在屏幕上创建弹出窗口的通用东西)。因为关于 javafx 的几乎一切都很复杂,更侧重于应用程序。我什至不确定 javafx 的安装。我不想做一门课程,甚至不想读书,不想浪费一个月的学习时间来学习我做过的事情(绘制我的数据框图表)。

解决方法

当使用javafx到非应用程序时,可以使用“Platform.startup”静态方法。您可以将 Maven 依赖项添加到您的 pom 中,而无需安装 javafx 的 .jmods 或使用 java 模块系统。

特别是对于“chart-fx”库使用的库“ikonli”,会导致在生成 fatJar 时替换依赖项服务的问题(“位于 META-INF/jar 服务中的文件”)。为了避免替换服务文件并合并它们,需要添加特定的 maven resource transformerServiceResourceTransformer”,以便在需要时合并服务内容。

学到的东西:

  1. 不需要使用模块化系统来与 javaFX 配合使用,也不需要拥有 javaFX sdk 或 jmods。
  2. fatJar 可能不是传送 Java 应用程序的最安全方式,因为资源和文件之间始终存在冲突的风险。

感谢: @Sedj601、@jwelsea 和 @Slaw 寻求帮助。

위 내용은 javafx를 사용하는 Java 라이브러리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제