gpt4 book ai didi

线程 "main"java.lang.NoClassDefFoundError : javafx/application/Application 中的 JavaFX 异常

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:33 26 4
gpt4 key购买 nike

我遇到了这个错误

Exception in thread "main" java.lang.NoClassDefFoundError: javafx/application/Ap
plication
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javafx.application.Application
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 13 more

当尝试运行我的类文件时,这是源代码

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

import java.util.concurrent.Executor;

public class TestApplication extends Application{

@Override
public void start(Stage stage) throws Exception {
new TestApplication();
}

public TestApplication() {
try{
final Parent root = FXMLLoader.load(Executor.class.getResource("test.fxml"));
final Stage stage = new Stage(){{
setScene(new Scene(root, 300, 250));
setTitle("Test");
setResizable(false);
show();
}};
}catch(Exception e){
e.printStackTrace();
}
}
}

fxml 文件包含一个简单的图形用户界面。

最佳答案

在过去的几个小时里,我一直在处理同样的问题。尽管我没有看到它被明确地写出来,但您似乎必须使用一种 JavaFX 打包工具,它可以是 Ant 任务或 javafxpackager 可执行文件。 (参见 http://docs.oracle.com/javafx/2/deployment/packaging.htm ,第 5.3.1 节)。 NetBeans IDE 使用 Ant 打包代码。 (我正在使用 IntelliJ)

当您使用其中一种打包方法时,除了应用程序的所有代码和资源之外,它还会将以下内容添加到您的输出 JAR 文件中:

/com/javafx/main/Main$1.class
/com/javafx/main/Main$2.class
/com/javafx/main/Main.class
/com/javafx/main/NoJavaFXFallback.class

有了这些,您就可以从命令行运行应用程序了:

java -jar outjar.jar

一切正常。如果我删除额外的 com.javafx.main 文件,应用程序将不会运行。

为了仔细检查这一点,我查看了 JavaFX 示例中的所有四个 JAR 文件(BrickBreaker、Ensemble、FXML-LoginDemo 和 SwingInterop)。他们也都有“额外”文件。

对于我的小型测试应用程序,我使用此命令行来构建“可执行”JAR 文件:

javafxpackager -createjar -appclass sample.Main -outfile outjar -v -nocss2bin -srcdir C:\workspaces\garoup1\out\production\javafx1

希望这对您有所帮助!

关于线程 "main"java.lang.NoClassDefFoundError : javafx/application/Application 中的 JavaFX 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54163009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com