当前位置: 首页 > 知识库问答 >
问题:

如何使用Java 11和JavaFX 11运行ControlsFX示例应用程序

翁和正
2023-03-14

ControlsFX网站说:

如果您想使用ControlsFX示例应用程序,只需下载ControlsFX版本并在命令提示符上运行以下命令(请务必将*替换为FXSample和ControlsFX-Sample的实际版本号):

java-jar控件sfx-samples-*. jar

我下载了ControlsFX 9.0.0,据说它是为Java 9及更高版本的用户设计的。

当我运行java-jar-controlsfx-samples-9.0.0时。jar我得到

错误:找不到或加载主类fxsampler。FXSampler
由以下原因引起:java.lang.NoClassDefFoundError:javafx/Application/Application

但没关系,根据使用JavaFX 11指南运行HelloWorld,我必须添加模块。

所以我尝试java--模块路径“C:\Program Files\java\javafx-sdk-11\lib”--add modules=javafx。控件-jar controlsfx-samples-9.0.0。jar,我得到

缺少JavaFX应用程序类fxsampler。FX采样器

我从包含controlsfx-9.0.0的目录执行所有命令。jar,控制SFX-samples-9.0.0。jar和fxsampler-1.0.10。jar

java-version对我的输出是:

openjdk版本“11.0.1”2018-10-16
openjdk Runtime Environment 18.9(build 11.0.1 13)
openjdk 64位服务器VM 18.9(build 11.0.1 13,混合模式)

欢迎提出任何意见和建议<提前谢谢你。

编辑:
在遵循Slaw的建议并运行java--模块路径“C:\Program Files\java\javafx-sdk-11\lib”后,添加模块=javafx。控件,javafx。fxml、javafx。web-jar控件fx-samples-9.0.0。jar我得到

Initialising FXSampler sample scanner...
        Discovering projects...
                Found project 'ControlsFX', with sample base package 'org.controlsfx.samples'
Exception in Application start method
java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class impl.org.controlsfx.version.VersionChecker
        at org.controlsfx.control.ControlsFXControl.(ControlsFXControl.java:35)
        at org.controlsfx.control.WorldMapView.(WorldMapView.java:93)
        at org.controlsfx.samples.HelloWorldMapView.(HelloWorldMapView.java:55)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
        at java.base/java.lang.Class.newInstance(Class.java:584)
        at fxsampler.util.SampleScanner.discoverSamples(SampleScanner.java:86)
        at fxsampler.FXSampler.start(FXSampler.java:106)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
        at java.base/java.security.AccessController.doPrivileged(Native Method)
        at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
        at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
        at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
        ... 1 more
Exception running application fxsampler.FXSampler

共有1个答案

徐卓
2023-03-14

在PR#720中修复。因此,新的Maven工件将包含修复。

可以在此处查看完整的发行历史记录。

 类似资料:
  • 尽管回顾了如何使用Java 11和JavaFX 11运行ControlsFX示例应用程序,以及如何运行ControlsFX Java 11和JavaFX 11以及web上的其他建议,但我仍然无法让ControlsFX示例应用程序在Java 11(OpenJDK 11.0.1)中运行。这是我的命令行: 和输出: 任何帮助将不胜感激,谢谢。

  • 我有一个用Java 8编译的可执行jar文件,其中包含一个名为< code>app.jar的JavaFX应用程序。 当我安装了Java8时,我可以简单地用运行它。 现在我只安装了Java 11,运行上面的命令会产生以下错误: 因为Java 11不再包含JavaFX。 所以我考虑安装JavaFX。openjfx.org以两种形式提供JavaFx:SDK和JMOD文件。 我认为我不需要SDK,因为我不

  • 我想迁移到JavaFX11。我已经学习了OpenJFX的“JavaFX11入门”(https://openjfx.io/openjfx-docs/),使用OpenJDK 11.0.1和Gluon的JavaFX SDK 11.0.1(在Netbeans 10VC2上),并且已经能够使示例应用程序运行(在我看来,我应该能够很容易地将JavaFX8代码移植到JavaFX11)。 然而,这正是我无法找到方

  • 比方说我安装了OracleJDK11(只是为了让事情更简单)。然后我下载了Gluon的JavaFX11,并在JDK上解包。实际上,我在哪里解包JavaFX并不重要(因为我的下一个目标是基于OpenJRE制作我自己的JRE安装程序)。然后我尝试启动应用程序: 我得到了这个: 启动层初始化过程中发生错误java.lang.LayerInstantiation异常:包jdk.internal.jrtfs

  • 在NetBeans中,我创建了一个名为JFXDev的Java应用程序项目,其中包含一个COM包。在com包内部是一个主类,其代码如下: 修改项目属性: 1)库->Modulepath添加路径C:/Program Files/java/javafx-sdk-11.0.2/lib 2)库->类路径添加路径C:/Program Files/java/javafx-sdk-11.0.2/lib/javaf

  • 我一直在尝试为javafx编译和运行这个示例 然后我试着运行这个例子 $java--mode-path"PATH_TO_FX":mods-m hellofx/hellofx。HelloFX 启动层初始化时出错java.nio.file.InvalidPathException:非法字符 所以我认为通往FX的路径是个问题,但事实并非如此。 $java——模块路径src:mods-m hellofx/