O problema é o seguinte quando eu só executo na IDE ele funciona o som normal mas quando eu compilo e tento executar aparece NullPointerException ou seja ele não achou o audio, mas
porque como resolvo isso? bom aqui está o codigo da classe do meu player:
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;
public class Audio {
URL fileUrl;
AudioClip Som;
public void Play(String qlms) {
this.fileUrl = this.getClass().getResource(qlms);
this.Som = Applet.newAudioClip(fileUrl);
}
}
Acho que você quis dizer isso e não as pastas em si tipo como se eu tivesse aberto um jar com winrar, se for o que eu estou pensando aqui esta uma imagem do meu projeto
Agora estou com 2 problema ele também não acha os arquivos dentro do pacote
mas se eu tirar de la de dentro deve voltar a funcionar mas continua o problema do .jar
Mano, vc disse que soh dá erro quando executa através do jar, certo? Se sim, volte a utilizar a String “Sons/ThemeSong2.wav”.
Reparei agora, esse erro soh aparece quando vc gera o jar. Nesse caso, vc não pode usar: this.getClass().getResource(qlms);. Pois a JVM não vai conseguir determinar o path dentro do jar.
Para contornar isso, vc deve usar: this.getClass().getResourceAsStream(qlms);, que irá retornar um InputStream. Com esse stream, vc pode criar um arquivo temporário assim:
public static File stream2file (InputStream in) throws IOException {
final File tempFile = File.createTempFile(PREFIX, SUFFIX);
tempFile.deleteOnExit();
try (FileOutputStream out = new FileOutputStream(tempFile)) {
IOUtils.copy(in, out);
}
return tempFile;
}
obs: Esse exemplo usa uma lib externa (IOUtils da apache).
E, através do arquivo temporário criado (tempFile), vc consegue recuperar a URL desse arquivo e passar para o método newAudioClip.
Desculpe a demora tive que fazer uns negocio o que eu coloco no sufix?
Ele ta dizendo que o PREFIX é muito curto, E se eu deixo como está diz que que não achou nada atribuindo o SUFIX nenhuma variavel.