Ursprungsmitteilung
Thema playSound und Verzeichnis in jar 
Autor Stefan Töngi 
Eingangsdatum 2016-01-16 22:20:07.0 
Mitteilung Hallo,

ich habe nach Packen der Jar-Datei festgestellt, dass dann die Sounds nicht gefunden werden, die Bilder und Sprites aber schon. Meine Ordner-Struktur in der jar sieht so aus:
backgrounds // Background-Bilder
ch // ch.aplu.cardgame usw
com // Mein Package com.toengi.projektname
META-INF
sprites // Spielkarten usw
wav // meine Sounds + Standardsounds wie _bird.wav

Das funktioniert auch alles soweit:
setBgImagePath("backgrounds/data_13.jpg");
kreuzBtn = new ToolBarItem("sprites/bigclub1.png");
playSound(GGSound.BIRD);

Was nicht funktioniert:
playSound(this, "wav/mischen.wav");
Datei kann nicht gefunden werden

Warum klappt das nicht ? In der Eclipse IDE funktionert es, aber in der JAR nicht, obwohl die Dateien alle drin sind...

 
 
      
Antworten
Thema Auffinden von wav-Dateien 
Autor Aegidius Pluess 
Eingangsdatum 2016-01-18 17:26:35.0 
Mitteilung Danke für die Anfrage. In der Tat ist das Auffinden von wav-Dateien im JAR manchmal schwierig. Allerdings funktioniert bei mir das folgende Testprogramm problemlos, nachdem ich das erzeugte JAR auch auf einen fremden PC kopiert habe:


// SoundDemo.java
// Test of sound system

import ch.aplu.jgamegrid.*;
import ch.aplu.util.*;
import java.net.URL;

public class SoundDemo extends GameGrid
{
  public SoundDemo()
  {
    super(6004001);
    String pathInJar = "wav/auto.wav";   // relative to root
    final SoundPlayer player = new SoundPlayer(pathInJar);
    
    // Just for testing
    URL url = SoundPlayer.URLfromJAR(pathInJar);
    System.out.println("URL: " + url);
    
    addNavigationListener(new GGNavigationAdapter()
    {
      public boolean started()
      {
        player.play();
        return false;
      }
      public boolean paused()
      {
        player.pause();
        return false;
      }
    });
    show();
  }

  public static void main(String[] args)
  {
    new SoundDemo();
  }
}





Ich verwende aber NetBeans als IDE und kopiere auto.wav in das Unterverzeichnis wav des Source-Verzeichnisses. Es wir dann von NetBeans richtig in das JAR verpackt.
Das Manifest sagt zudem, dass noch die Library JGameGrid.jar im Verzeichnis lib vorhanden sein muss.

Sie können von
hier
ein ZIP herunterladen, dessen Inhalt Sie in irgend ein Verzeichnis kopieren und dann mit Klick auf GGSound.jar starten können.
Wenn das geht, so richten Sie Eclipse so ein, dass genau das gleiche JAR erzeugt wird und kontrollieren Sie, ob es funktioniert.
Nachfolgend sollte auch Ihr eigenes Projekt ähnlich aufgebaut werden.

Verwenden Sie den neusten Release von JGameGrid! Beachten Sie, dass Sie beim Ctor von SoundPlayer kein this mehr brauchen.

MfG