【发布时间】: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/…),调整您的上下文直到它有效。只有在这种情况下,继续前进:)