gpt4 book ai didi

使用 JavaFX 播放 jar 中的声音时出现 java.lang.NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-02 01:26:27 25 4
gpt4 key购买 nike

我希望能够播放 mp3 文件中的声音,我看到了推荐使用 JavaFX 的帖子。我实现了 MediaPlayer 并初始化了 JFXPanel,在 Eclipse 中,一切都运行良好。

然而,当我导出到可运行的 jar 并尝试运行该程序时,我收到以下错误消息:java.lang.NoClassDefFoundError: javafx/scene/media/MediaException。

我认为这是由于较新的 JRE 版本中排除了 JavaFX(我在搜索解决方案期间遇到的)。我的主要问题是如何使用 JavaFX 发送 jar?我是否必须包含一个 jar ,如果是的话,我在哪里可以得到它?因为如果我没记错的话,eclipse 似乎没有将 JavaFX 打包到我的可运行文件中。

这里是一个例子,对我来说,已经触发了这种行为:

// This would throw a java.lang.NoClassDefFoundError for the JFXPanel but is effectively the same problem
public class Test extends Application
{
public static void main(String[] Args)
{
launch(Args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
StackPane root = new StackPane();

primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}

感谢您的帮助!

最佳答案

JavaFx 已被删除到 JDK> = 11 中,现在是一个单独的项目 opensurse [openjfx] ( https://openjfx.io/ )。现在,创建可在任何地方运行的 javafx 应用程序版本变得更加困难,但这是一个持续的演变,我认为这是很好的文档 [doc-image-live] ( https://openjfx.io/openjfx-docs/#modular )。

我在开发JDK 1.8时遇到了一个问题,但在我的版本中java系统是openjdk11,我认为这是同样的情况。

您的示例是错误的,因为不是 JavaFX 应用程序。JavaFX应用程序必须扩展javafx.application.Application并在main中调用方法launch,该方法将调用继承自的方法start应用程序。

这是一个简单的Oracle示例

public class HelloWorld extends Application {
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World!");
Button btn = new Button();
btn.setText("Say 'Hello World'");
btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
System.out.println("Hello World!");
}
});

StackPane root = new StackPane();
root.getChildren().add(btn);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}

ps:当你讲javafx时,你必须添加java版本,因为我们不知道你的java版本

关于使用 JavaFX 播放 jar 中的声音时出现 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848305/

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