Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 短声音文件在Netbeans中播放,但不在jar中播放_Java_Audio - Fatal编程技术网

Java 短声音文件在Netbeans中播放,但不在jar中播放

Java 短声音文件在Netbeans中播放,但不在jar中播放,java,audio,Java,Audio,我正在开发一个彩票程序,该程序使用不同的间隔更新循环中的姓名列表。对于每个更新,我想播放一个简短的(300毫秒)click.wav。当我在Netbeans中运行程序时,一切工作都很完美,但当我构建jar时,它拒绝播放。奇怪的是,如果我在最后加上静音,把声音延长到几秒钟,它就会播放,但是时间就完全关闭了,只有在循环运行了4-5次之后才会开始播放 我正在使用thread.sleep()在循环之间启动暂停。虽然这可能不是最好的方法,但肯定是最简单的方法,而且这与本计划的范围无关。我试过用定时器,但声音

我正在开发一个彩票程序,该程序使用不同的间隔更新循环中的姓名列表。对于每个更新,我想播放一个简短的(300毫秒)click.wav。当我在Netbeans中运行程序时,一切工作都很完美,但当我构建jar时,它拒绝播放。奇怪的是,如果我在最后加上静音,把声音延长到几秒钟,它就会播放,但是时间就完全关闭了,只有在循环运行了4-5次之后才会开始播放

我正在使用thread.sleep()在循环之间启动暂停。虽然这可能不是最好的方法,但肯定是最简单的方法,而且这与本计划的范围无关。我试过用定时器,但声音还是不响

这是我播放wav文件的代码

private static void play(String filename) {
    URL url = VinLotteri.class.getResource(filename);
    try {
        Clip clip = AudioSystem.getClip();
        clip.open(AudioSystem.getAudioInputStream(url));
        clip.start();
    } catch (LineUnavailableException | UnsupportedAudioFileException | IOException fail) {
    }
}
这是循环代码。请忽略(或给予建设性的批评)任何与问题无关的错误代码。我只做了几个月的编程,所以可能有很多

class StartTrekning extends SwingWorker<String, String> {

    private StartTrekning(List<String> navn, String vinner) {
    }

    @Override
    protected String doInBackground() {
        firstDraw = false;
        Random rnd = new Random();
        int v = 0;
        int vinnerID = -1;
        isRunning = true;
        int counterPluss = 0;
        int counterMinus = 0;

        int rand = rnd.nextInt(17) + 45; // Antall trekninger 45-61 
        //Setter opp ulik pause mellom hver trekning
        for (int i = rand; i > 0; i--) {
            if (i > 40) {
                v = 100;
            } else if (i > 35) {
                v = 150;
            } else if (i > 25) {
                v = 200;
            } else if (i > 20) {
                v = 250;
            } else if (i > 15) {
                v = 300;
            } else if (i > 10) {
                v = 400;
            } else if (i > 6) {
                v = 550;
            } else if (i > 3) {
                v = 800;
            } else if (i > 1) {
                v = 1200;
            } else if (i > 0 && rand > 53) {
                v = 2000;
            }

            play(click);
            vinnerID++;//Øker vinnerID, som gir index for navnelisten navn

            //"Loop-kode" (starter listen på nytt når den når slutten)
            if (vinnerID > navn.size() - 1) {
                vinnerID = 0;
            }
            vinner = navn.get(vinnerID);
            int pluss10 = vinnerID;
            int pluss9 = vinnerID;
            int pluss8 = vinnerID;
            int pluss7 = vinnerID;
            int pluss6 = vinnerID;
            int pluss5 = vinnerID;
            int pluss4 = vinnerID;
            int pluss3 = vinnerID;
            int pluss2 = vinnerID;
            int pluss1 = vinnerID;
            int minus1 = vinnerID;
            int minus2 = vinnerID;
            int minus3 = vinnerID;

            if (vinnerID > navn.size() - 11) {
                pluss10 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 10) {
                pluss9 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 9) {
                pluss8 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 8) {
                pluss7 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 7) {
                pluss6 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 6) {
                pluss5 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 5) {
                pluss4 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 4) {
                pluss3 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 3) {
                pluss2 = -10 + counterPluss;
            }
            if (vinnerID > navn.size() - 2) {
                pluss1 = -10 + counterPluss;
                counterPluss = 0;
            }
            if (vinnerID < 3) {
                minus3 = navn.size() + counterMinus;
            }
            if (vinnerID < 2) {
                minus2 = navn.size() + counterMinus;
            }
            if (vinnerID < 1) {
                minus1 = navn.size() + counterMinus;
            }
            if (vinnerID < 3) {
                counterMinus++;
            }
            if (vinnerID == 3) {
                counterMinus = 0;
            }
            if (vinnerID > navn.size() - 11) {
                counterPluss++;
            }
            //Slutt på "loop-kode"

            // Lager "rulleteksten"
            lblVinner.setText(vinner);
            lblHighlight1.setText(navn.get(minus1 - 1));
            lblHighlight2.setText(navn.get(minus2 - 2));
            lblHighlight3.setText(navn.get(minus3 - 3));
            lblHighlight7.setText(navn.get(pluss1 + 1));
            lblHighlight8.setText(navn.get(pluss2 + 2));
            lblHighlight9.setText(navn.get(pluss3 + 3));
            lblHighlight10.setText(navn.get(pluss4 + 4));
            lblHighlight11.setText(navn.get(pluss5 + 5));
            lblHighlight12.setText(navn.get(pluss6 + 6));
            lblHighlight13.setText(navn.get(pluss7 + 7));
            lblHighlight4.setText(navn.get(pluss8 + 8));
            lblHighlight5.setText(navn.get(pluss9 + 9));
            lblHighlight6.setText(navn.get(pluss10 + 10));
            try {
                Thread.sleep(v);
            } catch (InterruptedException ex) {
                Logger.getLogger(VinLotteri.class.getName()).log(Level.SEVERE, null, ex);
            }      
        }

        int rand1 = rnd.nextInt(100);
        //Legger inn en liten kunstpause
        if (rand1 < 50) {
            try {
                Thread.sleep(v);
            } catch (InterruptedException ex) {
                Logger.getLogger(VinLotteri.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        panelVinner.append(idVinn + ". Trekning: " + vinner + "\n"); //Skriver ut vinneren
        play(fanfare);
        flashText(lblVinner, Color.WHITE, Color.BLUE, 270, 1650);
        vinnere.add(vinner); //Lager vinnerliste
        idVinn++;
        nyListe(vinnerID, vinner);
        isRunning = false;
        return null;
    }
class StartTrekning扩展SwingWorker{
私人StartTrekning(列表导航、字符串输入){
}
@凌驾
受保护字符串doInBackground(){
firstDraw=false;
随机rnd=新随机();
int v=0;
int-vinnerID=-1;
isRunning=true;
整数平衡=0;
int计数器负=0;
int rand=rnd.nextInt(17)+45;//Antall trekninger 45-61
//二传手奥普乌利克暂停梅隆-赫弗-特雷克宁
对于(int i=rand;i>0;i--){
如果(i>40){
v=100;
}如果(i>35),则为其他情况{
v=150;
}否则,如果(i>25){
v=200;
}否则,如果(i>20){
v=250;
}如果(i>15),则为其他情况{
v=300;
}否则,如果(i>10){
v=400;
}否则,如果(i>6){
v=550;
}否则,如果(i>3){
v=800;
}否则,如果(i>1){
v=1200;
}else if(i>0&&rand>53){
v=2000;
}
播放(点击);
vinnerID++;//Øker vinnerID,navnelisten navn的som gir索引
//“Loop kode”(初学者听pånytt når den når sletten)
如果(vinnerID>navn.size()-1){
长春碱=0;
}
vinner=navn.get(vinnerID);
int pluss10=长春花;
int pluss9=长春花;
int pluss8=长春花;
int pluss7=长春花;
int pluss6=长春花;
int pluss5=长春花;
int pluss4=长春花;
int pluss3=长春花;
int pluss2=维尼利德;
int pluss1=维尼利德;
int减1=维尼利德;
int-minus2=维尼利德;
int minus 3=维尼利德;
如果(vinnerID>navn.size()-11){
加10=-10+对价;
}
如果(vinnerID>navn.size()-10){
加9=-10+对价;
}
如果(vinnerID>navn.size()-9){
加8=-10+对价;
}
如果(vinnerID>navn.size()-8){
加7=-10+对价;
}
如果(vinnerID>navn.size()-7){
加6=-10+对价;
}
如果(vinnerID>navn.size()-6){
加5=-10+对价;
}
如果(vinnerID>navn.size()-5){
加4=-10+对价;
}
如果(vinnerID>navn.size()-4){
加3=-10+对价;
}
如果(vinnerID>navn.size()-3){
加2=-10+对价;
}
如果(vinnerID>navn.size()-2){
加1=-10+对价;
平衡=0;
}
if(长春花碱<3){
minus3=导航大小()+计数器减号;
}
if(长春花碱<2){
minus2=导航大小()+计数器减号;
}
if(长春花碱<1){
minus1=导航大小()+计数器减号;
}
if(长春花碱<3){
反负++;
}
if(vinnerID==3){
反负数=0;
}
如果(vinnerID>navn.size()-11){
对策++;
}
//Slutt på“loop kode”
//拉格“鲁勒特克斯滕”
lblviner.setText(vinner);
lblHighlight1.setText(navn.get(minus1-1));
lblHighlight2.setText(navn.get(minus2-2));
lblHighlight3.setText(navn.get(minus3-3));
lblHighlight7.setText(navn.get(pluss1+1));
lblHighlight8.setText(navn.get(pluss2+2));
lblHighlight9.setText(navn.get(pluss3+3));
lblHighlight10.setText(navn.get(pluss4+4));
lblHighlight11.setText(navn.get(pluss5+5));
lblHighlight12.setText(navn.get(pluss6+6));
lblHighlight13.setText(navn.get(pluss7+7));
lblHighlight4.setText(navn.get(pluss8+8));
lblHighlight5.setText(navn.get(pluss9+9));
lblHighlight6.setText(navn.get(pluss10+10));
试一试{
睡眠(v);
}捕获(中断异常例外){
Logger.getLogger(VinLotteri.class.getName()).log(Level.SEVERE,null,ex);
}      
}
int rand1=rnd.nextInt(100);
//恩利滕昆斯特堡莱格酒店
如果(rand1<50){
试一试{
睡眠(v);
}捕获(中断异常例外){
Logger.getLogger(VinLotteri.class.getName()).log(Level.SEVERE,null,ex);
}
}
panelVinner.append(idVinn+”.Trekning:“+vinner+”\n”