Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > javazoom

problema con librería .jar javazoom.
creo un programa para reproducir sonido en eclipse e incluyo las librerías de javazoom. Funciona perfectamente.
El problema es al intentar lanzarlo sin usar eclipse.
Me da fallos tanto si incluyo los jar en el directorio, como si descomprimo y voy poniendo import de todas las carpetas. También lo he intentado con el plugin fat_jar y no lo consigo.

El fallo es:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at javazoom.jlgui.basicplayer.BasicPlayer.<clinit>(Unknown Source)
at programa_ingles$3.actionPerformed(programa_ingles.java:324)
......

Creo que el fallo es de reconocimiento de librerías, pero no se cómo solucionarlo.
Agradecería cualquier ayuda.

septiembre 16, 2014 | Unregistered Commenterpedro

Ese error NoClassDefFoundError aprendetelo bien porque es el indicativo de que te falta librerias. Bueno concreatemente que con encuentra la clase:

org.apache.commons.logging.LogFactory

Pero si esa clase no es tuya, que no lo es porque es de un paquete de apache, está claro que te falta una librería que tienes que añadir a tu proyecto.

Apache Commons logging

Descargala de releases y añadela y prueba a ver si no te vuelve a dar el error con otra clase, pero esta no debería volvertelo a dar si la librería esta correctamente asociada a tu proyecto.

Saludo.

septiembre 17, 2014 | Registered Commenterantuansoft

gracias. Ya me funciona. El problema ahora es que al lanzarlo en eclipse, funciona tanto con ficheros wav como mp3.
Al lanzarlo en el Terminal, sólo puedo abrir wav.
Me da el siguiente error al intentar abrir un mp3:Error:
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
Gracias de nuevo. Un saludo

septiembre 17, 2014 | Unregistered Commenterpedro

Eso ya es mucho más específico de tu problema con el tema Audio, ahí ya poco puedo hacer te toca darle al google.

Pero si te funciona en eclipse te aseguro que fuera tiene que funcionar, algo te falta por meter en tu proyecto.

septiembre 18, 2014 | Registered Commenterantuansoft

Podrías publicar el código que lanza ese error. Llevo años trabajando con esa librería, aparte de un fork mío para actualizarla, porque tiene más de 12 años de antigüedad, y depurar errores de JavaSound es bastante difícil, aunque es completamente imposible sin leer con extrema atención el código.

septiembre 18, 2014 | Registered Commenterchoces

Ante todo gracias por las respuestas.
El problema es que en eclipse funciona todo bien.
Para compilar por terminal intento poner los jar en la misma carpeta pero no me los lee.
Utilice el pluggin fat_jar y conseguí lanzarlo, pero sin reproducir mp3.
Así que los descomprimí e importé todas las carpetas de los .jar con import.
Tengo el mismo problema, no lee archivos mp3.
No lo he probado todavía, pero creo que el problema podría ser uno de estos dos:
a) hay dos archivos .class que no van dentro de ninguna carpeta. Tendría que poner import *;?

b) hay un archivo con el mismo nombre y en las mismas carpetas en dos jar distintos (creo que se llama PropertiesContainer.class) y tengo que elegir uno de los dos. Es el mismo archivo?. Tendría que poner en otra carpeta distinta por ejemplo el mp3spi1.9.4.jar para conseguir dos import de javazoom/spi/*; ?

Gracias.

septiembre 19, 2014 | Unregistered Commenterpedro

El problema es que el SPI de MP3 no se está iniciando correctamente.
Y ello es debido a que la librería no está correctamente situada en el classpath de la aplicación.

septiembre 19, 2014 | Registered Commenterchoces

Te refieres a la librería mp3spi. Esa la he puesto igual q las demás. Es posible q falte alguna como la de apache q me comentasteis al principio. Supongo q eclipse la metía directamente y q al compilar la tenga q poner yo?

Gracias otra vez.

septiembre 21, 2014 | Unregistered CommenterPedro

La excepción de Apache Logging no tiene nada que ver con la javax.sound.sampled.UnsupportedAudioFileException

La primera se debe a que la librería de Apache debe incluirse en el classpath de la aplicación, como las demás. Algunas librerías, como este caso, las usan en ejecución otras librerías. No es un asunto de imports en tu código fuente.

La segunda, sin saber cómo es tu código, y desde que línea de tu código se lanza, puede deberse a que el SPI no se inicializa. La librería de JavaZoom usa SPI, declarado en su archivo MANIFEST en la carpeta services. Se usa en ejecución para extender el SPI de Java Sound en el JDK. Tampoco es un asunto de imports.

Tu debes añadir todas las dependencias externas, librerías, en el classpath de la aplicación. No supongas que Eclipse las añade automáticamente por ti.

septiembre 21, 2014 | Registered Commenterchoces

Ante todo mil gracias por contestar.
Gracias a vuestra ayuda he conseguido utilizar las librerías completas.
Por si le puede ayudar a alguien que tenga los mismos problemas:
Mi problema era que descomprimía los ficheros y sólo copiaba y pegaba los .class.
Al copiar del archivo mp3spi la carpeta service con sus archivos, todo funciona perfectamente.
Muchísimas gracias otra vez.

septiembre 24, 2014 | Unregistered CommenterPedro