Estoy de programación en Java usando Eclipse.

Recientemente he intentado reproducir un archivo de sonido en mi programa. Hice esto:

URL url = this.getClass().getResource("ih.wav");
audioIn = AudioSystem.getAudioInputStream(url);
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();

Esto sólo funcionó, cuando traté de poner ih.wav en la carpeta bin, como si la carpeta bin fue la «carpeta de base» para mi proyecto. Poner el archivo en la carpeta principal del proyecto, no funciona. Ponerlo en la carpeta src, no funciona demasiado.

Puede que alguien me explique donde poner mis recursos para los programas de Java? Además, qué importa si puedo importar los recursos en Eclipse? Gracias

EDICIÓN:

Intentado crear una carpeta de recursos en la carpeta de proyecto principal, todavía me da un NullPointerException:

        URL url1 = this.getClass().getResource("res/ah.wav");
        audioIn = AudioSystem.getAudioInputStream(url1);
        clip1 = AudioSystem.getClip();
        clip1.open(audioIn);

        URL url2 = this.getClass().getResource("res/eh.wav");
        audioIn = AudioSystem.getAudioInputStream(url2);
        clip2 = AudioSystem.getClip();
        clip2.open(audioIn);

        URL url3 = this.getClass().getResource("res/ih.wav");
        audioIn = AudioSystem.getAudioInputStream(url3);
        clip3 = AudioSystem.getClip();
        clip3.open(audioIn);

        clip1.start();
        clip2.start();
        clip3.start();
  • ¿Recompilar después de ponerlo en la carpeta src? Estás seguro?
  • Sí, estoy seguro. No debería la carpeta del proyecto será la base de carpeta » para el proyecto? ¿Por qué es bin el «punto de partida»?
  • crear un resources carpeta como -- src — principal `– recursos
  • La carpeta bin no es el punto de partida. Eclipse simplemente compila todo, desde el directorio src en el directorio bin. Yo creo que poner una imagen o lo que sea en el directorio src causaría eclipse para copiarlo a la carpeta bin. Pero lamer @nachokk dijo, también puede crear una carpeta de recursos.. sólo asegúrese de decirle a eclipse para incluir en la compilación/proceso de construcción!
  • Por favor hacer es responder por lo que puede upvote 😉
  • Donde debo crear esta carpeta? En la fuente o en el recipiente? (Lo siento si no estoy siguiendo)
  • No crea nada en bin, todo lo que allí se genera cuando se compila.
  • He probado lo que has dicho y parece que eclipse no encontrar mis archivos, véase mi edición, por favor.
  • Si usted está usando un IDE asegúrese de que los recursos están llegando movido en el directorio de binarios. No actualizar tan a menudo como los archivos de clase. Puede ayudar a limpiar el proyecto.

InformationsquelleAutor user3150201 | 2014-01-11

3 Comentarios

  1. 2

    Mejor práctica sería crear una carpeta (dependiendo de la estructura del paquete) que se llama res o resources donde seguirá proyectos relacionados con los recursos tales como imágenes o archivos de sonido.

    Dependiendo de la preferencia, ya sea poner esta carpeta en su carpeta de proyecto principal MyProject/res o ponerlo dentro del paquete en cuestión, por ejemplo, main.java.res

    EDITAR

    Ajustarse más a su pregunta, no estoy muy familiarizado con el getResources() método, en lugar de eso yo personalmente recomiendo el uso de algunas código similar:

    File file = new File("ih.wav");
    audioIn = AudioSystem.getAudioInputStream(file);
    clip = AudioSystem.getClip();
    clip.open(audioIn);
    clip.start();

    Que debe producir los resultados que usted está buscando, dado que cambia la ruta de acceso del archivo en consecuencia (por ejemplo, "main/resources/ih.wav" o donde sea que usted está guardando el archivo.

    • Probado lo que has dicho, parece que no funciona. Por favor, ver mi edición.
    • ¿De dónde cree la carpeta? teniendo en cuenta que usted tendrá que utilizar la ruta de acceso en el parámetro de getResource()
    • He creado en la misma carpeta donde src y bin existen. La carpeta principal del proyecto.
    • Ver la edición
  2. 6

    Advertencia: yo no uso Eclipse, nunca he utilizado Eclipse, mis conocimientos de Eclipse cantidades a leer otros posts y respondiendo a las preguntas aquí

    Marco de su proyecto, crear un directorio llamado resources. En lugar aquí todo lo que «recursos» a los que desea acceder desde dentro de la aplicación. Estos se liado con su aplicación como recursos incrustados.

    Desde dentro de la aplicación utilizar

    this.getClass().getResource("/ah.wav")

    o

    this.getClass().getResource("/resources/ah.wav")

    Suponiendo que coloca los archivos en el nivel superior de la resources camino. Si están en un sub-directorio, deberá proporcionar la ruta de acceso completa…

    Limpiar, construir y probar

    • +1 por la buena explicación y clean and build
  3. 4

    Me gustaría crear un resources carpeta dentro de src algo como src/main/resources. Te gustaría echar un vistazo a Maven que es la gestión del proyecto y de la comprensión de la herramienta que ayuda mucho en la organización del proyecto.

    • Hice exactamente eso, pero por alguna razón tengo un NullPointerException cuando tratando de llegar a los archivos : \ ¿Alguna idea?
    • Bueno, es siempre prueba y error, pero ver este respuesta si te ayuda
    • también hacer un clean & construir

Dejar respuesta

Please enter your comment!
Please enter your name here