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

JAVA使用JavaFX从jar播放声音时lang.NoClassDefFoundError

壤驷华辉
2023-03-14

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

然而,当我导出到一个可运行的jar,并尝试运行该程序时,我得到以下错误消息:java.lang.NoClassDefFoundError: javafx/场景/媒体/MediaExcture。

我认为这是因为在较新的JRE版本中排除了JavaFX(这是我在搜索解决方案时遇到的)。我的主要问题是如何使用JavaFX发布jar?我必须包括一个罐子吗?如果是的话,我在哪里可以买到?因为如果我没有弄错的话,eclipse似乎不会将JavaFX打包到我的runnable中。

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

// 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();
    }
}

谢谢你的帮助!

共有2个答案

孔瑾瑜
2023-03-14

如果您不想使用JavaFX,另一种方法是使用源自JavaZOOM的库来读取mp3文件。我在github上看到许多产品都是从这个来源派生出来的,例如,https://github.com/goxr3plus/java-sound-libraries但我自己并没有利用这个图书馆。

我的偏好是将JavaFXforGUI与javax相结合。音频我构建了一个依赖于java的库。声音抽样调查。用于输出的SourceDataLine。但我从来没有费心去实现阅读MP3。在使用压缩音频资源时,我倾向于采用ogg/vorbis路线。

梁丘兴腾
2023-03-14

JavaFx已被删除到JDK中

当我使用JDK 1.8开发时,我有一个问题,但在我的版本中,java系统是openjdk11,我认为这是相同的情况。

您的示例是错误的,因为它不是JavaFX应用程序。JavaFX应用程序必须扩展JavaFX。应用在主调用方法launch时,此方法将调用从应用程序继承的方法start。

这是先知的一个简单例子

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。我知道它的基本原理。我尝试使用media和mediaplayer类播放一个声音,叫做“sound.mp3”。我正在eclipse中编程,我在src文件夹中有声音文件,与“(默认包)”相同的文件夹。下面是我的代码: 请告诉我我做错了什么。 下面是来自控制台的错误消息:

  • 问题内容: 在Python中播放声音文件(.wav)的最简单方法是什么?最简单的说,我指的是最独立的平台,并且需要最少的依赖。pygame当然是一个选择,但听起来似乎有些过分。 问题答案: Snack Sound Toolkit可以播放wav,au和mp3文件。

  • 问题内容: 我正在尝试播放声音,但无法正常工作。 编辑1: 仍然行不通。 编辑2 :此代码有效。我的设备处于静音模式。 问题答案: 对您的代码进行了修改: Swift 3和Swift 4.1:

  • 播放(播放音效/播放录音)

  • 问题内容: 我希望能够在程序中播放声音文件。我应该去哪里看? 问题答案: 我写了下面的代码,效果很好。但我认为它仅适用于格式。

  • 我希望能够在我的程序中播放声音文件。我应该去哪里?