第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 JavaFX 從 jar 播放聲音時(shí)出現(xiàn) java.lang.NoClassDef

使用 JavaFX 從 jar 播放聲音時(shí)出現(xiàn) java.lang.NoClassDef

我希望能夠播放 mp3 文件中的聲音,我看到了推薦使用 JavaFX 的帖子。我實(shí)現(xiàn)了 MediaPlayer 并初始化了 JFXPanel,在 eclipse 中,一切都很好。然而,當(dāng)我導(dǎo)出到一個(gè)可運(yùn)行的 jar 并嘗試運(yùn)行該程序時(shí),我收到以下錯(cuò)誤消息:java.lang.NoClassDefFoundError: javafx/scene/media/MediaException。我認(rèn)為這是由于在較新的 JRE 版本中排除了 JavaFX(這是我在搜索解決方案時(shí)遇到的)。我的主要問(wèn)題是如何使用 JavaFX 發(fā)送 jar?我是否必須包括一個(gè)罐子,如果是,我從哪里得到它?因?yàn)槿绻覜](méi)記錯(cuò)的話,eclipse 似乎不會(huì)將 JavaFX 打包到我的可運(yùn)行程序中。這里有一個(gè)例子,對(duì)我來(lái)說(shuō),已經(jīng)觸發(fā)了這種行為:// This would throw a java.lang.NoClassDefFoundError for the JFXPanel but is effectively the same problempublic 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 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊

JavaFx 被移除到 JDK> = 11 中,現(xiàn)在是一個(gè)單獨(dú)的項(xiàng)目 opensurse [openjfx] ( https://openjfx.io/ )。現(xiàn)在創(chuàng)建一個(gè)可在任何地方運(yùn)行的應(yīng)用程序 javafx 版本變得更加困難,但它是一個(gè)不斷發(fā)展的過(guò)程,我認(rèn)為這是很好的文檔 [doc-image-live] ( https://openjfx.io/ openjfx-docs/#modular)。


我在開發(fā) JDK 1.8 時(shí)遇到了類似的問(wèn)題,但在我的版本 java 系統(tǒng)中是 openjdk11,我認(rèn)為這是相同的情況。


您的示例是錯(cuò)誤的,因?yàn)樗皇?JavaFX 應(yīng)用程序。JavaFX 應(yīng)用程序必須擴(kuò)展javafx.application.Application并在主調(diào)用方法launch ,該方法將調(diào)用從 Application 繼承的方法start 。


這是 Oracle 的一個(gè)簡(jiǎn)單示例


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:說(shuō)javafx的時(shí)候一定要加上java版本,因?yàn)槲覀儾恢滥愕膉ava版本


查看完整回答
反對(duì) 回復(fù) 2023-03-02
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

如果您不想使用 JavaFX,另一種方法是使用源自 JavaZOOM 的庫(kù)來(lái)完成讀取 mp3 文件的任務(wù)。我在 github 上看到許多源自此來(lái)源的產(chǎn)品,例如https://github.com/goxr3plus/java-sound-libraries但我自己并沒(méi)有使用過(guò)這個(gè)特定的庫(kù)。

我的偏好是將用于 GUI 的 JavaFX 與 javax.audio.sampled 以及我構(gòu)建的依賴于 java.sound.sampled.SourceDataLine 輸出的庫(kù)相結(jié)合。但我從來(lái)沒(méi)有費(fèi)心去實(shí)施閱讀 mp3。在使用壓縮音頻資源時(shí),我傾向于采用 ogg/vorbis 路線。


查看完整回答
反對(duì) 回復(fù) 2023-03-02
  • 2 回答
  • 0 關(guān)注
  • 210 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)