Pessoal estou com uma problema estranho em um aplicativo que executa .wav, seguinte, durante o momento que estou editando o código do aplicativo seja no Debug ou execução normal ele funciona corretamente, porem ao criar o arquivo .jar do aplicativo ele não mais executa o arquivo de áudio .wav e também não apresenta nenhum erro de execução.
Seguinte estou utilizando javax.sound.*; para executar o audio.
Com AePlayWave extends Thread eu faço a chamada da execução do meu aplicativo e o danado só executa durante o momento em que estou trabalhando no código.
privateStringfilename;privatePositioncurPosition;privatefinalintEXTERNAL_BUFFER_SIZE=524288;// 128KbenumPosition{LEFT,RIGHT,NORMAL};publicAePlayWave(Stringwavfile){filename=wavfile;curPosition=Position.NORMAL;}publicAePlayWave(Stringwavfile,Positionp){filename=wavfile;curPosition=p;}publicvoidrun(){FilesoundFile=newFile(filename);if(!soundFile.exists()){System.err.println("Wave file not found: "+filename);return;}AudioInputStreamaudioInputStream=null;try{audioInputStream=AudioSystem.getAudioInputStream(soundFile);}catch(UnsupportedAudioFileExceptione1){e1.printStackTrace();return;}catch(IOExceptione1){e1.printStackTrace();return;}AudioFormatformat=audioInputStream.getFormat();SourceDataLineauline=null;DataLine.Infoinfo=newDataLine.Info(SourceDataLine.class,format);try{auline=(SourceDataLine)AudioSystem.getLine(info);auline.open(format);}catch(LineUnavailableExceptione){e.printStackTrace();return;}catch(Exceptione){e.printStackTrace();return;}if(auline.isControlSupported(FloatControl.Type.PAN)){FloatControlpan=(FloatControl)auline.getControl(FloatControl.Type.PAN);if(curPosition==Position.RIGHT)pan.setValue(1.0f);elseif(curPosition==Position.LEFT)pan.setValue(-1.0f);}auline.start();intnBytesRead=0;byte[]abData=newbyte[EXTERNAL_BUFFER_SIZE];try{while(nBytesRead!=-1){nBytesRead=audioInputStream.read(abData,0,abData.length);if(nBytesRead>=0)auline.write(abData,0,nBytesRead);}}catch(IOExceptione){e.printStackTrace();return;}finally{auline.drain();auline.close();}}
}
A execução e feita.
new AePlayWave( "alarme.wav" ).start(); // executa
toninhocell
Pessoal creio que resolvi o problema.
Coloque meu arquivo de áudio em um diretório externo a minha aplicação e no Manifest eu alterei o Class-Path indicando o caminho para o arquivo, da seguinte forma: Class-Path: audio/, com isso é só colocar a na pasta audio o arquivo .wav que eu quero executar e pronto. Contanto que o nome dele seja o mesmo que coloquei na aplicação.
Galera um GRANDE ABRAÇO a todos do fórum e muitíssimo obrigado pela ajuda!
PS: Posta ia como eu faço para colocar código no forum de maneira mais organizada!