Sequencer, funciona no Eclipse. Exporto para um .jar e fica sem som

12 respostas
fjfeitosa

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?

12 Respostas

rodriguesabner

olha esse link

fjfeitosa

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.

rodriguesabner

O arquivo ta dentro dos seus resources?

fjfeitosa

Estão na mesma pasta do projeto.

rodriguesabner

Tenta assim:

URL musica = this.getClass().getResource("/pasta/musica.mp3");

Se não for:

getClass().getResourceAsStream("/pasta/musica.mp3"))
fjfeitosa

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?

rodriguesabner

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

fjfeitosa

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!.

rodriguesabner

Ok! Dá um retorno com a situação

staroski

A partir do momento que seus resources estão dentro do JAR, você só consegue obtê-los através do getResourceAsStream(caminhoRelativoAoClasspath).

fjfeitosa

Ok, orochimaru e staroski. Com as dicas de voces vou tentar resolver esse do mp3. Depois retorno. Por ora obrigado.

fjfeitosa

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.

Criado 19 de maio de 2020
Ultima resposta 23 de mai. de 2020
Respostas 12
Participantes 3