Java Sound criado no desktop para linux

Boa Noite, estou com o seguinte problema, instalei a mesma versão do Java no linux e no windows, estou usando a IDE Eclipse para fazer o código, mas ao tentar rodar no Armbian do Orange Pi Zero ele encontra problema.
Estou tentando rodar mais de um áudio ao mesmo tempo (é a segunda etapa do meu projeto), no windows está dando certo, mas no linux não funcioná. Como faço para resolver?

Coloquei esses apanhadores para tentar descobrir o erro, caso alguém consiga me ajudar. As imagens são das versões do JDE

Exception in thread “Thread-3” java.lang.IllegalArgumentException: No line match ing interface Clip supporting format PCM_SIGNED unknown sample rate, 16 bit, ste reo, 4 bytes/frame, big-endian is supported.
at java.desktop/javax.sound.sampled.AudioSystem.getLine(AudioSystem.java :425)
at java.desktop/javax.sound.sampled.AudioSystem.getClip(AudioSystem.java :461)
at opi_testes.UmaTeclaComMusica.play(UmaTeclaComMusica.java:24)
at opi_testes.UmaTeclaComMusica$2.run(UmaTeclaComMusica.java:79)
at java.base/java.lang.Thread.run(Thread.java:834)

Que brinquedinho legal esse ai heim !!!
Vc conseguiu comprar o Orange Pi Zero sem pagar o frete ?

Mas nao entendi direito o problema da sua postagem, o erro esta onde exatamente ?

Ai se ve que Java modular pra pequenos dispositivos faz todo o sentido.

Eu fiz uma bateria eletrônica com Arduino, e consegui tocar simultaneamente 2 áudios devido a capacidade de processamento, e ainda sim era em 8 bits o som.

Já no Orange Pi Zero eu testei pelo aplay com várias abas e consegui 4 músicas ao mesmo tempo na resolução 16 bits 44 hz, então eu conseguirei fazer com ele.

O primeiro problema que resolvi foi funcionar os pinos I/O, o segundo é fazer o som tocar.

Eu fiz uma programação em Java (eu estava trabalhando com C no arduino, Java é uma novidade para mim), utilizando a biblioteca Javax.sound.*; eu consegui tocar no computador áudios simultâneos , mas quando jogo esse programa para o linux pelo terminal ele não toca os áudios.

Me parece que uma música ele toca, mas quando aciono a mesma música, ou outra música pelo java ao mesmo tempo ele aparece esse erro.

at java.desktop/

A pergunta é se tem alguma diferença entre o java desktop e o do terminal? são versões diferentes como mostrado na foto da postagem. Como faço para compatibilizar o projeto do desktop para o linux no terminal?

Eu tive que pagar taxação, comprei várias coisas ao mesmo tempo, e devido um problema na hora do vendedor me mandar acabou mandando por DHL Expresso (nunca use a modalidade expresso de nada importado), essa modalidade obriga a pagar a taxa por mais barata que o produto seja.

Já comprei várias coisas da china, tento comprar sempre abaixo de 100 dolares, por mais que eles taxem produtos acima de 50 dolares, por lei só poderia taxar acima de 100, logo se recorrer consegue reverter o frete.

Ela custou 10 dolares pelo alibaba, como paguei taxa deve ter saído por 22 dolares. Mas comprei um Lichee Pi também, a placa é até mais bacana, tem entradas mais parecidas com arduino, mas não vem com wifi integrado.

Entao sao 3 coisas diferentes, o programa rodando no windows, o programa rodando no linux e o programa rodando no Orange Pi ?

Ou atraves do Orange Pi esta sendo enviado para o computador para este reproduzir o som, no windows ele funciona e no linux nao para varias musicas ao mesmo tempo, e’ isso ?

Eu tinha esse erro quando tentava tocar um .wav maior que 16 bytes se não me engano.

Geralmente eu convertia os sons de MP3 pra Wav e acontecia esse erro, tenta usar um bit-rate menor pra o seu audio

Apenas duas, no windows e no Linux instalado dentro do OrangePi (ele tem saída de áudio), o áudio é no computador quando rodado no windows (funciona), e quando rodado no linux o áudio é pelo orange pi (não funciona).

É o mesmo programa, na verdade ele chega a tocar a música uma vez, mas caso eu não espere ela terminar e acione o botão para tocar novamente, começa a dar erro (isso no OPI)

ainda não tentei tocar os áudios maiores de 16 bits pela função “aplay”, mas quando toquei essa em questão, em quatro janelas diferentes, ele reproduziu as quatro ao mesmo tempo, uma sobre a outra.

Creio que a capacidade de processamento de de 1,2 Ghz e 552 ram consiga tocar as músicas. Mas a biblioteca javax.sound.*; só aceita áudio de 8 ou 16 bits.

Pelo que estou entendendo do erro, o problema é o JRE do linux instalado, a biblioteca dele é diferente da biblioteca windows, e não aceita multiplos threads ao mesmo tempo.

Será que tem como contornar essa situação?
Para que usava o seu orange pi? Que fim levou?

Tenta com o JavaFX, outra hora vou fazer um teste aqui.

Como eu tentei usar esse JavaFX, faço do jeito que se manda, adiciono a biblioteca ao pacote java, coloco o comando

–module-path “C:\Program Files\Java\javafx-sdk-11.0.2\lib” --add-modules javafx.controls,javafx.fxml

para carregar aplicação, e ainda sim não funciona. Depois disso ele não acha mais o arquivo da classe. Se conseguir utilizar me avisa, obrigado

Java >= 9 rodar classes nao modulares compiladas em java anterior.

coloca o caminho correto
java --module-path javafx-sdk-14.0.1/lib --add-modules javafx.controls,javafx.graphics -jar Ensemble8.jar

ou

java --module-path /javafx-sdk-14.0.1/lib --add-modules javafx.controls,javafx.graphics -cp /javafx_samples/Ensemble8.jar ensemble.EnsembleApp

Java >= 9 chamada modular
Nesse exemplo module tem o nome da Jar Display
java --module-path /javafx-sdk14.0.1/lib/:/dist/Display.jar -m Display/webviewbrowser.WebViewBrowser

No caso do modular pode usar JLink e este vai gerar uma JVM do tamanho e necessidade do projeto

No Java 14 tem o recurso do jpackage, nesse caso ele empacota tudo nativamente para tambem a distribuição em lojas de aplicativos.

Tambem existe o www.graalvm.org para gerar nativo.

Testado Linux com JavaFX chamando varios videos simultaneos e o resultado final esta sobrepondo o som de todos eles.

Para fazer um programa em linux, chamar áudios simultaneamente você acha melhor Java ou C++?

Digitei o comando da seguinte maneira:

root@orangepizero:/home/lucas/Java# java --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.graphics,javafx.base,javafx.media -jar teclado.jar

e obtive o seguinte erro:

Exception in thread “main” java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.UnsupportedOperationException: Unable to open DISPLAY
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.lambda$new$6(GtkApplication.java:173)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.glass.ui.gtk.GtkApplication.(GtkApplication.java:171)
at javafx.graphics/com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(GtkPlatformFactory.java:41)
at javafx.graphics/com.sun.glass.ui.Application.run(Application.java:144)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:258)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:269)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
… 5 more

o que esta errado na compilação?

Isso depende da sua escolha. Os 2 resolvem o problema.

Se ainda não tem baixado o Ensemble8.jar ( que foi compilado no java 8)
baixa ele.

Java SE Development Kit 8u251 Demos and Samples Downloads
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

Ele tem que rodar na forma de chamada do exemplo que foi postado acima.

Se tiver rodando, e o seu programa sendo chamado nos mesmos moldes continuar dando erro, tem que ver dentro dele o que pode estar errado.

Mas o seu linux esta’ em modo texto ou grafico ?
coloca essa opção pra ver

java -Dprism.verbose=true --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.graphics,javafx.base,javafx.media -jar teclado.jar

E veja o que aparece em Graphics Vendor: