Home > Java > Java library using javafx

Java library using javafx

WBOY
Release: 2024-02-22 12:25:05
forward
571 people have browsed it

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
Copy after login

我尝试过的事情:

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 寻求帮助。

The above is the detailed content of Java library using javafx. For more information, please follow other related articles on the PHP Chinese website!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template