0

私はオンラインクラスを受講していますが、クラスがセミウィンドウ中心であるためにハングアップすることがあります。現在、オーディオクリップを再生しようとしているJavaアプレットがあります。私はIdeaIntellijを使用しており、クラスファイルと同じ場所にオーディオファイルを配置しました。アプレットの実行にアイデアが使用するポリシーファイルも更新しましたが、何をしてもオーディオファイルが見つからないようです。ポリシーファイル(argh!)で理解できなかったものだと、75%確信していますが、それが何であるかはわかりません。コードスニペット、ポリシーファイル、および実行しようとしたときの出力を貼り付けます。助けてください-Linux固有の違いのために私が立ち往生しているのはこれが2回目です。

フォーマットの問題についてお詫びします...

    public class MyApplet extends JApplet implements ActionListener
    {
        JButton play, stop;
        AudioClip audioClip;
        File myAudioFile;

        public void init()
        {
            play = new JButton("Play");
            play.addActionListener(this);

            stop = new JButton("Stop");
            stop.addActionListener(this
    [...took out unnecessary stuff...]
            System.out.println("Codebase is: " + getCodeBase());
            myAudioFile = new File(getCodeBase().toString()+"desktop-login.ogg");
            if(myAudioFile.exists()) {
                audioClip = getAudioClip(getCodeBase(), "desktop-login.ogg");
            }
            else {
                System.out.println("Failed to find file:"+ audioClip);
            }

        }
[...took out unnecessary stuff...]
    //------------------POLICY FILE CONTENTS--
    grant {
      permission java.security.AllPermission;
      permission java.net.SocketPermission "*", "accept, connect, listen, resolve";
    };

    grant codeBase "file:/home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/*" {
      permission java.util.PropertyPermission "user.home", "read";
    }; 

    //--------output (scrubbed a bit - it's failing at the audio clip play part because the audioClip object is null): 
    Codebase is: file:/home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/
    Failed to find file:null
    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
        at MyApplet.actionPerformed(MyApplet.java:48)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
4

2 に答える 2

0

このようなファイルパスを使用して試してください

file:////home/mylogin/IdeaProjects/3RD/Lesson7/soundPlay/out/production/soundPlay/
于 2012-10-30T16:22:12.337 に答える
0

わかりました、私はばかげていると感じます。Linux のネイティブ Java で .ogg ファイルを読み込もうとしてもうまくいかないことがわかりました。Linux ベースのコーデックを使用すると思っていましたが、それは間違いでした。Java がネイティブにデコードできるもの (.wav ファイルなど) を使用する予定でした。.wav ファイルに切り替えたところ、すべて問題なく動作し始めました。おい!

于 2012-11-02T06:58:28.760 に答える