Alo, pessoal. Usei um modelo de codigo de um usuario, fiz um sequencer, coloquei os arquivos .mid na pasta do projeto, usei uma combo box pra escolher o arquivo a ser executado aperto o play e funciona tudo muito bem. Aí exportei o arquivo como jar. Então, ele abre, seleciono o arquivo .mid, clico no play e nao acontece nada (não tem som). Porque no Eclipse funciona tudo certinho e no .jar não tem som? Alguem tem uma ideia? O que eu esqueci?
olha esse link
Olá, orochimaru.
O modo como eu ‘pego’ o arquivo é:
…
public static String uriString;
arq= cbMus.getSelectedItem().toString();
if (evt.getSource() == bPlay) {
uriString = new File( arq + ".mp3" ).toURI().toString();
pick = new Media(uriString);
player = new MediaPlayer(pick);
player.play();
}
Em que local eu usaria os métodos que voce sugeriu?
Essa parte ‘musical’ do java eu conheço pouco …
Obrigado pela ajuda.
O arquivo ta dentro dos seus resources?
Estão na mesma pasta do projeto.
Tenta assim:
URL musica = this.getClass().getResource("/pasta/musica.mp3");
Se não for:
getClass().getResourceAsStream("/pasta/musica.mp3"))
Ainda não consegui. Experimentei a segunda opção, o sistema pede que mude URL para
InputStream, mas ainda não consegui. Tô tentando. Só uma pergunta: os arquivos meus são .mid, não .mp3. Funciona da mesma forma?
ué, mas vc passou que ta pegando .mp3, acredito que sim, eu não sei que biblioteca vc ta usando
https://www.tutorialspoint.com/java/lang/classloader_getresourceasstream.htm
Oh, desculpe! É que os dois aplicativos que fiz (.mid e .mp3) estão com o mesmo problema: toca no Eclipse e não toca quando exporto para um jar. No caso este é realmente de mp3. Deixa eu me situar de novo, com as suas dicas acima. Foi mal!.
Ok! Dá um retorno com a situação
A partir do momento que seus resources estão dentro do JAR, você só consegue obtê-los através do getResourceAsStream(caminhoRelativoAoClasspath).
Ok, orochimaru e staroski. Com as dicas de voces vou tentar resolver esse do mp3. Depois retorno. Por ora obrigado.
Olá pessoal. “apanhei” um pouco mas consegui fazer alguma coisa. Graças ao orochimaru e o staroski consegui entender esse lance do ‘getResource’ pra ‘pegar’ o resource dentro .jar. Aí fiz várias experiencias, e achei exemplo do raghy num link(abaixo) , adaptei para o meu caso. A sequencia de como consegui fazer funcionar é:
criei um combobox, um array de string com as musicas, capturadas pelo getSelectedItem().toString(), armazenadas numa String ‘music’ que envia como parametro para o metodo abaixo:
public void carregarSom(String music) {
AudioInputStream sound = null;
try {
sound = AudioSystem.getAudioInputStream(getClass().getResource("/musica/" + music + ".wav"));
} catch (UnsupportedAudioFileException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "problema no som", "sound", JOptionPane.INFORMATION_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "problema no som", "sound", JOptionPane.INFORMATION_MESSAGE);
}
DataLine.Info info = new DataLine.Info(Clip.class, sound.getFormat());
try {
clip = (Clip) AudioSystem.getLine(info);
} catch (LineUnavailableException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "problema no som", "clip", JOptionPane.INFORMATION_MESSAGE);
}
try {
clip.open(sound);
} catch (LineUnavailableException e) {
JOptionPane.showMessageDialog(null, "problema no som", "clip_open", JOptionPane.INFORMATION_MESSAGE);
e.printStackTrace();
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "problema no som", "clip_open", JOptionPane.INFORMATION_MESSAGE);
e.printStackTrace();
}
}
public void tocaSom() {
clip.start();
}
Consegui exportar para um .jar. Por ora obrigado a todos voces.