【问题标题】:Unable to run javafx project无法运行 javafx 项目
【发布时间】:2021-10-03 13:41:47
【问题描述】:

在 Javafx 项目中运行主文件时出现以下错误:

C:\Users\monu\OneDrive\Documents\jdk-11.0.10\bin\java.exe --module-path C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib --add-modules javafx.fxml,javafx.controls,javafx.graphics --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.3\lib\idea_rt.jar=59212:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.2.3\bin" -Dfile.encoding=UTF-8 -classpath C:\D-drive\codage-aider\student\agbi\sample-github\C195\out\production\C195;C:\D-drive\libraries\mysql-connector-java-8.0.26.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx-swt.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.web.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.base.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.fxml.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.media.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.swing.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.controls.jar;C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib\javafx.graphics.jar main.java.C195
Graphics Device initialization failed for :  d3d, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:254)
    at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:264)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    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: Error initializing QuantumRenderer: no suitable pipeline found
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
    at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread "main" 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 java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: No toolkit found
    at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:276)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364)
    ... 5 more

Process finished with exit code 1

在 Intellij Idea 的运行配置中,为 VM 参数的值指定以下内容:`--module-path "C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib" --add-modules javafx .fxml,javafx.controls,javafx.graphics`

我已经包含了我在项目中使用的必要的 JavaFX lib 文件夹和 MySQL 连接器 jar,但奇怪的是我仍然收到这个奇怪的错误。
我从这里下载了适用于 Windows 的 SDK https://gluonhq.com/products/javafx/ 这有点奇怪。我不确定我是否遗漏了什么。因为我已按照 JavaFX 网站上的所有步骤进行操作。我在这里使用一个非 Maven 项目。关于如何
继续调试或修复它的任何想法或提示?谢谢



最小的可重现示例:

 package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

sample.fxml:

<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
          xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>


Intellij 中的 VM 参数是 - --module-path "C:\D-drive\libraries\javafx-sdk-17.0.0.1\lib" --add-modules javafx.controls


这是一个简单的普通 JavaFX 程序。有一些设置问题导致了问题,因为没有比这更简单的程序了。看起来没有 JavaFX 项目在工作。
我只在试验非 Maven 项目。

【问题讨论】:

  • 我尝试使用一个简单的 JavaFX 项目。奇怪的是,这也给出了同样的错误。所以这是最小的可重现示例。但是,必须为 JavaFX SDK 提供正确的路径。 ufile.io/w0z68i2g 这只是一个 hello world 项目,它会出错。看起来像我的一些设置问题。
  • 当您使用idea时,我建议您使用它创建一个新的javafx project,看看它是否适用于您的环境。
  • 编辑问题,将minimal reproducible example 的所有内容放在问题中,而不是指向 zip 的非现场链接。
  • @jewelsea,我只创建了一个 JavaFX 项目。我将分享一个最小的可重现示例
  • 设置中有问题.. 远方没有什么好说的;)从一个保证有效的示例开始(参见 f.i.stackoverflow.com/questions/52467561/…),调整您的上下文直到它有效。只有在这种情况下,继续前进:)

标签: javafx java-11


【解决方案1】:

我从未使用过 intellij,我使用过 eclipse,但我在从 ide 运行时遇到了同样的问题,但是当我将其导出为 jar 时。 问题是,javafx sdk 有一个 bin 文件夹,其中包含几个 dll 文件,这对于运行 javafx 应用程序很重要。将库添加到构建路径后,ide 应该使用它们,至少 eclipse 会这样做,确保您在 sdk 中维护了原始文件夹 为了避免将来出现此类问题,并避免在导出 jar 时手动添加所有 dll,我使用 jlink 创建了一个新的 java 运行时映像,其中内置了所有 javafx sdk。 这至少对我来说是最好的选择,如果你想这样做,你应该下载javafx jmods并将它们添加到jdk安装中的jmods文件夹中,然后你可以使用jlink创建一个新的运行时映像 我稍后会编辑这篇文章并添加 jlink 命令行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 1970-01-01
    • 2018-04-05
    • 2013-09-24
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多