java - 为什么我的程序的声音在 Eclipse 中可以工作,但在 jar 中生成时却不能

标签 java eclipse audio

经过很长一段时间的编码后,我准备导出我的程序了!但后来我得到了一个奇怪的事情,声音不起作用......但它在 Eclipse 中起作用!你能帮我吗?非常感谢!

package me.NL.framed;


       import java.awt.Color;
       import java.awt.Toolkit;
       import java.awt.event.ActionEvent;
       import java.awt.event.ActionListener;


       import javax.swing.ImageIcon;
       import javax.swing.JButton;
       import javax.swing.JFrame;
       import javax.swing.JLabel;
       import javax.swing.JPasswordField;
       import javax.swing.JTextArea;
       import javax.swing.JTextField;

   public class JpanelFrame {





    public JpanelFrame() {





    ImageIcon image = new ImageIcon(getClass().getResource("/Rescources/img/SpashImg.png"));
    ImageIcon image2 = new ImageIcon(getClass().getResource("/Rescources/img/Backgroundgame.png"));
    JLabel imglabel = new JLabel(image);
    JLabel imglabel2 = new JLabel(image2);





    // splash screen
    JFrame splash = new JFrame("Loading..");
    splash.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/Rescources/img/Icon.png")));
    splash.setSize(480, 240);
    splash.add(imglabel);
    splash.setLocationRelativeTo(null);
    splash.setResizable(false);
    splash.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    splash.setUndecorated(true);

    // login stuff

    final JButton lb3 = new JButton("Log in");
    lb3.setBounds(335,47,90,60);

    final JTextField Txp1 = new JTextField();
    Txp1.setVisible(false);
    Txp1.setBounds(70,50,250,20);

    final JTextField Txp3 = new JTextField();
    Txp3.setEditable(false);
    Txp3.setText("Username:");
    Txp3.setBounds(3,48,250,20);
    Txp3.setBorder(null);


    final JTextField Txp4 = new JTextField();
    Txp4.setEditable(false);
    Txp4.setText("Password:");
    Txp4.setBounds(3,84,250,20);
    Txp4.setBorder(null);

    final JPasswordField Txp2 = new JPasswordField();
    Txp2.setVisible(false);
    Txp2.setBounds(70,85,250,20);

    // Log in
    final JFrame login = new JFrame("Login om te starten");
    login.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/Rescources/img/Icon.png")));
    login.setSize(480, 240);
    login.setLayout(null);
    login.add(Txp1);
    Txp1.setVisible(true);
    login.add(Txp2);
    Txp2.setVisible(true);
    login.add(lb3);
    lb3.setVisible(true);
    login.add(Txp3);
    Txp3.setVisible(true);
    login.add(Txp4);
    Txp4.setVisible(true);
    login.setLocationRelativeTo(null);
    login.setResizable(false);
    login.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


    try {
        splash.setVisible(true);
        Sound.playSound("start.wav");
        Thread.sleep(5000);
        splash.setVisible(false);
        login.setVisible(true);
        Thread.sleep(600);

    } catch (InterruptedException e1) {

        e1.printStackTrace();
    }



    final JButton b1 = new JButton("Nederlands Zinsdeel hulp");
    b1.setBounds(300, 200, 370, 40);

    final JButton b2 = new JButton("Uitloggen");
    b2.setBounds(300, 259, 370, 40);


    // Tweede gedeelte

    final JLabel Tex1 = new JLabel("Hoe vind je de persoonsvorm?");
    Tex1.setForeground(Color.BLACK);



    Tex1.setVisible(false);
    Tex1.setBounds(250, 350, 500, 20);


    final JTextField Tx1 = new JTextField();
    Tx1.setVisible(false);
    Tx1.setBounds(250,370,500,20);

    final JButton b3 = new JButton("Volgende");
    b3.setVisible(false);
    b3.setBounds(300,400,100,30);

    // Derde Gedeelte

    final JLabel Tex2 = new JLabel("Hoe krijg je het onderwerp van een zin?");
    Tex2.setForeground(Color.BLACK);


    Tex2.setVisible(false);
    Tex2.setBounds(250, 350, 500, 20);


    final JTextField Tx2 = new JTextField();
    Tx2.setVisible(false);
    Tx2.setBounds(250,370,500,20);

    final JButton b4 = new JButton("Volgende");
    b4.setVisible(false);
    b4.setBounds(300,400,100,30);

    // Vierde gedeelte
    final JLabel Tex3 = new JLabel("Wat is een werkwoordelijk gezegde (WG)?");
    Tex3.setForeground(Color.BLACK);


    Tex3.setVisible(false);
    Tex3.setBounds(250, 350, 500, 20);


    final JTextField Tx3 = new JTextField();
    Tx3.setVisible(false);
    Tx3.setBounds(250,370,500,20);

    final JButton b5 = new JButton("Volgende");
    b5.setVisible(false);
    b5.setBounds(300,400,100,30);



    // Vijfde gedeelte
    final JLabel Tex4 = new JLabel("Wat is een lijdend voorwerp?");
    Tex4.setForeground(Color.BLACK);


    Tex4.setVisible(false);
    Tex4.setBounds(250, 350, 500, 20);


    final JTextField Tx4 = new JTextField();
    Tx4.setVisible(false);
    Tx4.setBounds(250,370,500,20);

    final JButton b6 = new JButton("Volgende");
    b6.setVisible(false);
    b6.setBounds(300,400,100,30);

    // Zesde gedeelte

    final JLabel Tex5 = new JLabel("Wat is een meewerkend voorwerp?");
    Tex5.setForeground(Color.BLACK);


    Tex5.setVisible(false);
    Tex5.setBounds(250, 350, 500, 20);


    final JTextField Tx5 = new JTextField();
    Tx5.setVisible(false);
    Tx5.setBounds(250,370,500,20);

    final JButton b7 = new JButton("Volgende");
    b7.setVisible(false);
    b7.setBounds(300,400,100,30);


    // zevende gedeelte
    final JLabel Tex6 = new JLabel("Wat is een bijwoordelijke bepaling?");
    Tex6.setForeground(Color.BLACK);


    Tex6.setVisible(false);
    Tex6.setBounds(250, 350, 500, 20);


    final JTextField Tx6 = new JTextField();
    Tx6.setVisible(false);
    Tx6.setBounds(250,370,500,20);

    final JButton b8 = new JButton("Volgende");
    b8.setVisible(false);
    b8.setBounds(300,400,100,30);

    // achtste gedeelte


    final JLabel Tex7 = new JLabel("Wat is een bijwoordelijke bepaling?");
    Tex7.setForeground(Color.BLACK);


    Tex7.setVisible(false);
    Tex7.setBounds(250, 350, 500, 20);


    final JTextField Tx7 = new JTextField();
    Tx7.setVisible(false);
    Tx7.setBounds(250,370,500,20);

    final JButton b9 = new JButton("Volgende");
    b9.setVisible(false);
    b9.setBounds(300,400,100,30);
    // negende gedeelte

    // tiende gedeelte

    final JLabel Tex8 = new JLabel("Wat is het onderwerp in deze zin?");
    Tex8.setForeground(Color.BLACK);


    Tex8.setVisible(false);
    Tex8.setBounds(250, 350, 500, 20);

    final JTextArea ow1 = new JTextArea("De kat rent weg van de man.");
    ow1.setEditable(false);


    ow1.setVisible(false);
    ow1.setBounds(250, 350, 500, 20);



    final JTextField Tx8 = new JTextField();
    Tx8.setVisible(false);
    Tx8.setBounds(250,370,500,20);

    final JButton b10 = new JButton("Volgende");
    b10.setVisible(false);
    b10.setBounds(300,400,100,30);
    // negende gedeelte

    // elfde gedeelte


    b1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            b1.setVisible(false);   
            b2.setBounds(300, 725, 370, 40);
            b3.setVisible(true);
            Tx1.setVisible(true);
            Tex1.setVisible(true);

        }

        });





        b3.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {




                if(Tx1.getText().contains("andere tijd") || Tx1.getText().contains("verleden tijd") || Tx1.getText().contains("vraagzin")) {
                    Tex1.setVisible(false);
                    Tx1.setVisible(false);
                    b3.setVisible(false);
                    Score.goed++;
                    Score.Streak++;
                    if(Score.Streak == 1) {
                        Sound.playSound("Wow.wav");
                    } else if(Score.Streak == 2) {
                        Sound.playSound("damnson.wav");
                    } else if(Score.Streak == 3) {
                        Sound.playSound("Triple.wav");
                    } else if(Score.Streak == 4) {
                        Sound.playSound("neverdone.wav");
                    } else if(Score.Streak == 5) {
                        Sound.playSound("airhorn.wav");
                    } else if(Score.Streak == 6) {
                        Sound.playSound("omgtrick.wav");
                    } else if(Score.Streak == 7) {
                        Sound.playSound("camera.wav");
                    } else if(Score.Streak == 8) {
                        Sound.playSound("omygod.wav");
                    } else if(Score.Streak == 9) {
                        Sound.playSound("scaryskrill.wav");
                    } else if(Score.Streak == 10) {
                        Sound.playSound("SANIC.wav");
                    } else if(Score.Streak == 11) {
                        Sound.playSound("illuminati.wav");
                    } else if(Score.Streak == 12) {
                        Sound.playSound("Tactical.wav");    
                    }
                //  Sound.listSounds();

                    Tex2.setVisible(true);
                    Tx2.setVisible(true);
                    b4.setVisible(true);
                } else {
                    Score.fout++;
                    Score.Streak = 0;
                }
            }
                });


                    b4.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if(Tx2.getText().contains("wie/wat + persoonsvorm") || Tx2.getText().contains("wie of wat en persoonsvorm")
                                    || Tx2.getText().contains("wie of wat + persoonsvorm") || Tx2.getText().contains("wie/wat en persoonsvorm")) {
                            Tex2.setVisible(false);
                            Tx2.setVisible(false);
                            b4.setVisible(false);
                            Score.goed++;
                            Score.Streak++;
                            if(Score.Streak == 1) {
                                Sound.playSound("Wow.wav");
                            } else if(Score.Streak == 2) {
                                Sound.playSound("damnson.wav");
                            } else if(Score.Streak == 3) {
                                Sound.playSound("Triple.wav");
                            } else if(Score.Streak == 4) {
                                Sound.playSound("neverdone.wav");
                            } else if(Score.Streak == 5) {
                                Sound.playSound("airhorn.wav");
                            } else if(Score.Streak == 6) {
                                Sound.playSound("omgtrick.wav");
                            } else if(Score.Streak == 7) {
                                Sound.playSound("camera.wav");
                            } else if(Score.Streak == 8) {
                                Sound.playSound("omygod.wav");
                            } else if(Score.Streak == 9) {
                                Sound.playSound("scaryskrill.wav");
                            } else if(Score.Streak == 10) {
                                Sound.playSound("SANIC.wav");
                            } else if(Score.Streak == 11) {
                                Sound.playSound("illuminati.wav");
                            } else if(Score.Streak == 12) {
                                Sound.playSound("Tactical.wav");    
                            }

                            Tex3.setVisible(true);
                            Tx3.setVisible(true);
                            b5.setVisible(true);



                            } else {
                                Score.fout++;
                                Score.Streak = 0;
                            }
                        }

                    });

                    b5.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if(Tx3.getText().contains("werkwoorden")) {
                                Tex3.setVisible(false);
                                Tx3.setVisible(false);
                                b5.setVisible(false);
                                Score.goed++;
                                Score.Streak++;
                                if(Score.Streak == 1) {
                                    Sound.playSound("Wow.wav");
                                } else if(Score.Streak == 2) {
                                    Sound.playSound("damnson.wav");
                                } else if(Score.Streak == 3) {
                                    Sound.playSound("Triple.wav");
                                } else if(Score.Streak == 4) {
                                    Sound.playSound("neverdone.wav");
                                } else if(Score.Streak == 5) {
                                    Sound.playSound("airhorn.wav");
                                } else if(Score.Streak == 6) {
                                    Sound.playSound("omgtrick.wav");
                                } else if(Score.Streak == 7) {
                                    Sound.playSound("camera.wav");
                                } else if(Score.Streak == 8) {
                                    Sound.playSound("omygod.wav");
                                } else if(Score.Streak == 9) {
                                    Sound.playSound("scaryskrill.wav");
                                } else if(Score.Streak == 10) {
                                    Sound.playSound("SANIC.wav");
                                } else if(Score.Streak == 11) {
                                    Sound.playSound("illuminati.wav");
                                } else if(Score.Streak == 12) {
                                    Sound.playSound("Tactical.wav");    
                                }

                                Tex4.setVisible(true);
                                Tx4.setVisible(true);
                                b6.setVisible(true);

                            } else {
                                Score.fout++;
                                Score.Streak = 0;
                            }


                        }

                    });

                    b6.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if(Tx4.getText().contains("zinsdelen") || Tx4.getText().contains("Wie of wat + alle eerder gevonden zinsdelen")
                                    || Tx4.getText().contains("Wie/wat en alle eerder gevonden zinsdelen") || Tx4.getText().contains("Wie of wat en alle eerder gevonden zinsdelen")) {

                                Tex4.setVisible(false);
                                Tx4.setVisible(false);
                                b6.setVisible(false);
                                Score.goed++;
                                Score.Streak++;
                                if(Score.Streak == 1) {
                                    Sound.playSound("Wow.wav");
                                } else if(Score.Streak == 2) {
                                    Sound.playSound("damnson.wav");
                                } else if(Score.Streak == 3) {
                                    Sound.playSound("Triple.wav");
                                } else if(Score.Streak == 4) {
                                    Sound.playSound("neverdone.wav");
                                } else if(Score.Streak == 5) {
                                    Sound.playSound("airhorn.wav");
                                } else if(Score.Streak == 6) {
                                    Sound.playSound("omgtrick.wav");
                                } else if(Score.Streak == 7) {
                                    Sound.playSound("camera.wav");
                                } else if(Score.Streak == 8) {
                                    Sound.playSound("omygod.wav");
                                } else if(Score.Streak == 9) {
                                    Sound.playSound("scaryskrill.wav");
                                } else if(Score.Streak == 10) {
                                    Sound.playSound("SANIC.wav");
                                } else if(Score.Streak == 11) {
                                    Sound.playSound("illuminati.wav");
                                } else if(Score.Streak == 12) {
                                    Sound.playSound("Tactical.wav");    
                                }

                                Tex5.setVisible(true);
                                Tx5.setVisible(true);
                                b7.setVisible(true);

                            } else {
                                Score.fout++;
                                Score.Streak = 0;
                            }
                        }

                    });

                    b7.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if(Tx5.getText().contains("plaats of     ...     ...tijd       tijd")           || Tx5.getText().contains("plaats of tijd")) {
                            Tex5.setVisible(false);
                            Tx5.setVisible(false);
                            b7.setVisible(false);
                            Score.goed++;
                            Score.Streak++;
                            if(Score.Streak == 1) {
                                Sound.playSound("Wow.wav");
                            } else if(Score.Streak == 2) {
                                Sound.playSound("damnson.wav");
                            } else if(Score.Streak == 3) {
                                Sound.playSound("Triple.wav");
                            } else if(Score.Streak == 4) {
                                Sound.playSound("neverdone.wav");
                            } else if(Score.Streak == 5) {
                                Sound.playSound("airhorn.wav");
                            } else if(Score.Streak == 6) {
                                Sound.playSound("omgtrick.wav");
                            } else if(Score.Streak == 7) {
                                Sound.playSound("camera.wav");
                            } else if(Score.Streak == 8) {
                                Sound.playSound("omygod.wav");
                            } else if(Score.Streak == 9) {
                                Sound.playSound("scaryskrill.wav");
                            } else if(Score.Streak == 10) {
                                Sound.playSound("SANIC.wav");
                            } else if(Score.Streak == 11) {
                                Sound.playSound("illuminati.wav");
                            } else if(Score.Streak == 12) {
                                Sound.playSound("Tactical.wav");    
                            }

                            Tex6.setVisible(true);
                            Tx6.setVisible(true);
                            b8.setVisible(true);


                            } else {
                                Score.fout++;
                                Score.Streak = 0;
                            }
                        }
                    });


                    b8.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if(Tx6.getText().contains("zelfstandig naamwoord")) {
                                Tex6.setVisible(false);
                                Tx6.setVisible(false);
                                b8.setVisible(false);
                                Score.goed++;
                                Score.Streak++;
                                if(Score.Streak == 1) {
                                    Sound.playSound("Wow.wav");
                                } else if(Score.Streak == 2) {
                                    Sound.playSound("damnson.wav");
                                } else if(Score.Streak == 3) {
                                    Sound.playSound("Triple.wav");
                                } else if(Score.Streak == 4) {
                                    Sound.playSound("neverdone.wav");
                                } else if(Score.Streak == 5) {
                                    Sound.playSound("airhorn.wav");
                                } else if(Score.Streak == 6) {
                                    Sound.playSound("omgtrick.wav");
                                } else if(Score.Streak == 7) {
                                    Sound.playSound("camera.wav");
                                } else if(Score.Streak == 8) {
                                    Sound.playSound("omygod.wav");
                                } else if(Score.Streak == 9) {
                                    Sound.playSound("scaryskrill.wav");
                                } else if(Score.Streak == 10) {
                                    Sound.playSound("SANIC.wav");
                                } else if(Score.Streak == 11) {
                                    Sound.playSound("illuminati.wav");
                                } else if(Score.Streak == 12) {
                                    Sound.playSound("Tactical.wav");    
                                }

                                Tex7.setVisible(true);
                                Tx7.setVisible(true);
                                b9.setVisible(true);


                                } else {
                                    Score.fout++;
                                    Score.Streak = 0;
                                }   


                        }

                    });

                    b9.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            if(Tx7.getText().contains("zelfstandig naamwoord")) {
                                Tex7.setVisible(false);
                                Tx7.setVisible(false);
                                b9.setVisible(false);
                                Score.goed++;
                                Score.Streak++;
                                if(Score.Streak == 1) {
                                    Sound.playSound("Wow.wav");
                                } else if(Score.Streak == 2) {
                                    Sound.playSound("damnson.wav");
                                } else if(Score.Streak == 3) {
                                    Sound.playSound("Triple.wav");
                                } else if(Score.Streak == 4) {
                                    Sound.playSound("neverdone.wav");
                                } else if(Score.Streak == 5) {
                                    Sound.playSound("airhorn.wav");
                                } else if(Score.Streak == 6) {
                                    Sound.playSound("omgtrick.wav");
                                } else if(Score.Streak == 7) {
                                    Sound.playSound("camera.wav");
                                } else if(Score.Streak == 8) {
                                    Sound.playSound("omygod.wav");
                                } else if(Score.Streak == 9) {
                                    Sound.playSound("scaryskrill.wav");
                                } else if(Score.Streak == 10) {
                                    Sound.playSound("SANIC.wav");
                                } else if(Score.Streak == 11) {
                                    Sound.playSound("illuminati.wav");
                                } else if(Score.Streak == 12) {
                                    Sound.playSound("Tactical.wav");    
                                }

                                Tex8.setVisible(true);
                                Tx8.setVisible(true);
                                b10.setVisible(true);


                                } else {
                                    Score.fout++;
                                }   


                        }

                    });











    final JFrame frame = new JFrame("Nederlands hulp");


    frame.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/Rescources/img/Icon.png")));


    frame.setSize(1000, 800);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);

    // Knoppen
            frame.add(b1);
            frame.add(b2);
            frame.add(b3);
            frame.add(b4);
            frame.add(b5);
            frame.add(b6);
            frame.add(b7);
            frame.add(b8);
            frame.add(b9);
            frame.add(b10);


            // Textfields
            frame.add(Tx1);
            frame.add(Tx2);
            frame.add(Tx3);
            frame.add(Tx4);
            frame.add(Tx5);
            frame.add(Tx6);
            frame.add(Tx7);
            frame.add(Tx8);

            // Text areas
            frame.add(Tex1);
            frame.add(Tex2);
            frame.add(Tex3);
            frame.add(Tex4);
            frame.add(Tex5);
            frame.add(Tex6);
            frame.add(Tex7);
            frame.add(Tex8);

            // Ander
            frame.add(ow1);

    frame.add(imglabel2);
    imglabel2.setBounds(0, 0, 1000, 800);

    frame.setLocationRelativeTo(null);
    frame.getContentPane().setBackground(Color.BLACK);
    frame.setLayout(null);



    b2.addActionListener(new ActionListener() {


        public void actionPerformed(ActionEvent e) {
            System.exit(0);
            System.out.println("Alle Taken Gestopt");

        }

    });

    lb3.addActionListener(new ActionListener() {




        @SuppressWarnings("deprecation")
        @Override
        public void actionPerformed(ActionEvent e) {
            if(Txp1.getText().contains("leerling") && Txp2.getText().contains("78132")) {
                login.setVisible(false);
                frame.setVisible(true);

            }

        }

    });

    // eerste gedeelte




    }
    public static void main(String[] args) {
    new JpanelFrame();  


    }



   }

   /*
    * 
    * Toevoegen:
    * MLG Geluid op goed streak [Klaar]
    * Meer dingen voor frame
    *  Frame achtergrond
    *  knop plaatje
    *  Splash screen [Klaar]
    *  Login [Klaar]
    */

我的音频类是:

 package me.NL.framed;

 import javax.sound.sampled.AudioInputStream;
 import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.Clip;

 public class Sound {





 public static synchronized void playSound(final String url) {





        new Thread(new Runnable() {  // the wrapper thread is unnecessary, unless it blocks on the Clip finishing, see comments
          public void run() {

            try {
              Clip clip = AudioSystem.getClip();
              AudioInputStream inputStream =     A udioSystem.getAudioInputStream(Sound.class.getResource("/Rescources/" + url));
              clip.open(inputStream);
              clip.start(); 
            } catch (Exception e) {
              System.err.println(e.getMessage());
            }
          }
        }).start();
      }




  }

最佳答案

在任何场景下,您都需要确保所表示的资源

"/Rescources/" + url

实际上可以在您的类路径中以 jar 或文件夹的形式提供。

它在 Eclipse 中工作的原因可能是因为 Eclipse 可能会将资源文件夹复制到您的 bin 或类目录。

关于java - 为什么我的程序的声音在 Eclipse 中可以工作,但在 jar 中生成时却不能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29106534/

相关文章:

Java 的方法与函数

swift - 观看操作系统 : Microphone & Audio Processing

flutter - 多次播放相同的音频文件-Audioplayers Flutter

Java - 深度克隆具有多种类型元素的 Vector

java - 使用 Ivy API 获取最新版本的依赖项?

java - java中字母数字的正则表达式

linux - 如何确定正在使用哪个 eclipse sdk?

eclipse - 如何使用 EGit 将当前 Eclipse 项目添加到 git?

java - 表单嵌套 - JSP、HTML

c++ - 哪种音频文件格式最容易操作?