私はJavaに比較的慣れていませんが、ここでもう少し掘り下げています。
ニワトリのボタンを表示するプログラムを作成しています。このボタンをクリックすると、ニワトリの鳴き声のオーディオ クリップが再生されます。単純なようですが、オーディオをまったく機能させることができません。
これを達成するために AudioClip を使用しています。私が独学で使用している本、[i]Introduction to Java Programming[/i] (第 8 版) by Y. Daniel Liang によると、場所に関係なく、非アプレット プログラムでも AudioClip を使用できるとのことです。 .
ただし、これを機能させるのに問題があるため、これまでのところ私が持っているものは次のとおりです。コードを提供し、受け取ったエラーを提供します。
ちなみに、私は一時的に Mac を使用していて、Windows で試す機会がありませんでした。それが何かに影響する理由はわかりませんが、まあまあです。
//this is the class that plays the sound. The main class follows.
import javax.swing.JApplet;
import java.applet.*;
import java.net.URL;
public class ChickenSound extends JApplet
{
private AudioClip chSound; //creates AudioClip
public ChickenSound()
{
URL url = getClass().getResource("resources/chicken-sound.wav"); //creates a url that is the path of the soundfile
chSound = this.newAudioClip(url); //sets AudioClip equal to the url
chSound.play(); //plays AudioClip
}
}
//main class
// some of these imports are unnecessary but I will clean them up later
import java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.*;
import java.net.URL;
import javax.swing.*;
public class ChickenButton extends JFrame
{
private ImageIcon chBtnIcon = new ImageIcon("resources/chicken-side.png");
private JButton chBtn = new JButton(chBtnIcon);
private JPanel panel = new JPanel(new GridBagLayout());
public ChickenButton() //main window
{
GridBagConstraints c = new GridBagConstraints();
chBtn.setBorder(BorderFactory.createEmptyBorder());
chBtn.setContentAreaFilled(false);
Font bigFont = new Font("Times New Roman", Font.BOLD, 25);
JLabel chLbl = new JLabel("Click the Chick'n");
chLbl.setFont(bigFont);
c.gridheight = 1;
c.gridx= 0;
c.gridy = 0;
c.weighty = 2;
panel.add(chLbl,c);
c.gridheight=2;
c.gridx= 0;
c.gridy = 1;
c.weighty = 2;
panel.add(chBtn, c);
add(panel);
chBtn.addActionListener(new ChLstnr()); //creates click listener for button
}
public static void main(String[] args)
{
ChickenButton window = new ChickenButton();
window.setLocationRelativeTo(null);
window.setTitle("Chick'n Button");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(300, 400);
window.setVisible(true); //creates window
}
class ChLstnr implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Cluck cluck cluck"); //for button functionality testing purposes (and it works)
ChickenSound chSnd = new ChickenSound(); //this is supposed to play the sound. This doesn't work.
}
}
}
私が受け取るエラーは...
2012-07-06 15:44:33.365 java[41264:ff03] Error loading /Library/Audio/Plug-Ins/HAL/JackRouter.plugin/Contents/MacOS/JackRouter: dlopen(/Library/Audio/Plug-Ins/HAL/JackRouter.plugin/Contents/MacOS/JackRouter, 262): no suitable image found. Did find:/Library/Audio/Plug-Ins/HAL/JackRouter.plugin/Contents/MacOS/JackRouter: no matching architecture in universal wrapper
2012-07-06 15:44:33.367 java[41264:ff03] Cannot find function pointer New_JackRouterPlugIn for factory 7CB18864-927D-48B5-904C-CCFBCFBC7ADD in CFBundle/CFPlugIn 0x102191490 </Library/Audio/Plug-Ins/HAL/JackRouter.plugin> (bundle, not loaded)
これが何を意味するのか本当にわかりません。明らかに、ロードできないオーディオ プラグインと関係がありますが、よくわかりません。どうやら、これは Java を台無しにしているというよりも、私のコンピューターのエラーである可能性がありますが、これまでのところ解決策は見つかりませんでした。Eclipse と Netbeans の 2 つの IDE でこれを試しましたが、どちらも同じエラーが発生します。誰かがこれで何が起こっているのか考えていますか?
どんな助けでも大歓迎です。
ありがとう。
編集:今はうまくいきます。何とかして。