# mp3 player mit javazoom



## guggy (3. Aug 2009)

Hi Leute!
Ich habe folgendes Problem:
Ich habe einen Mp3 Player programmiert der super funktioniert.
So das Problem an der Sache ist der Mp3 Player funktioniert nur im Editor; wenn ich also ein selbständiges Programm daraus machen will, also eine jar Datei, funktionien genau die Funktionien nicht bei denen javazoom benötigt wird. Kann es sein das beim erzeugen der jar Datei die class Dateien von javazoom nicht mitverwendet werden? Also das sie sozusagen ausgelassen werden.
Ich würde mich enorm freuen wenn mir jemand helfen könnte!
mfg


----------



## Ebenius (4. Aug 2009)

Ja das kann sein und ist in der Regel der Fall. Hängt natürlich im einzelnen davon ab, wie das JAR erzeugt wird.

Den Inhalt einer JAR-Datei kann man einfach prüfen, indem man auf der Kommandozeile 
	
	
	
	





```
jar -tf meins.jar
```
 ... aufruft.

Ebenius


----------



## guggy (4. Aug 2009)

ja das ist mir klar und ich habe es schon geprüft.
Die class Dateien von javazoom sind nicht dabei, wie du schon gesagt hast!
Nun zu meiner Frage:
Wie binde ich diese Dateien trotzdem ein?
Ich erzeuge die jar Datei übrigens mit den Java Editor.
mfg
ps: Ich freue mich auf jede Antwort


----------



## Ebenius (4. Aug 2009)

Entweder Du gibst im CLASS-PATH-Attribut im Manifest den Ort des javazoom-JAR-Datei an, oder Du packst den Inhalt der JAR mit in Dein JAR ein. Letzteres ist allerdings bzgl. Lizenz zu überprüfen; ich kenne javazoom nicht.

Siehe auch: 
Sun Java™ Tutorials: Adding Classes to the JAR File's Classpath
JAR-Datei - Byte-Welt Wiki
Ebenius


----------



## guggy (7. Aug 2009)

Ich habe jetzt das versucht wie du es mir beschrieben hast, komm aber leider kein Stück weiter!!
Könntest du dir das mal anschauen??
Ich könnte dir ein einfaches Demo schicken und vielleicht schaffst du es ja?
mfg und dannke für die Antworten


----------



## Ebenius (7. Aug 2009)

Versuch es doch bitte im Forum zu lösen! Wie sieht denn Dein JAR-Manifest aus? Und wo liegt die JAR-Datei die verknüpft werden muss auf der Festplatte?

Ebenius


----------



## guggy (7. Aug 2009)

Also ich habe jetzt beide mir vorgeschlagene Versionen versucht.
Ich habe alle Class Dateien von Javazoom in einen Ordner kopiert.
Die fertige jar Datei ist zwar größer aber das Resultat ist gleich geblieben. 
Und das mit dem Manifest funktioniert leider auch nicht.
Könnte ich dir das nicht einfach mal schicken und du schaust dir das an, un wir lösen dann das problem im Forum?
Weil ich habe wirklich keine Idee mehr woran ich immer scheitere.
mfg


----------



## MiDniGG (7. Aug 2009)

Stell die Datei halt hier ein. Reicht ja deine "Demo"-Version


----------



## Ebenius (7. Aug 2009)

Gib mal auf der Kommandozeile in dem Verzeichnis wo Dein großes JAR liegt (also das mit den zusätzlich hineinkopierten .class-Dateien) ein: 
	
	
	
	





```
jar -tf meinegroßedatei.jar
```
Und dann den gesamten Inhalt bitte (in CODE-Tags) posten.

Dasselbe auch mit Deinem Manifest, so wie ich oben schrieb. Dann kann man auch was sagen. Vorher nicht.

Ebenius


----------



## guggy (7. Aug 2009)

ok da bin ich jetzt nicht mitgekommen!!
Aber ich habe den Inhalt schon mehrfach geprüft.
Also entweder sind die Class Dateien überhaut nicht enthalten(in der Jar Datei), oder sie sind alle enthalten.
Aber auch wenn sie enthalten sind is das Resultat das selbe.
Ich würde mich freuen wenn sich das jemand von euch Experten mal anschauen könnte.
Ich habe ein Demo geschrieben das vom code her sehr simple ist.
Das Problem ist aber nicht das Programm den in der Konsole funktioniert es ja einwandfrei.
Nur nach dem erzeugen der Jar Datei funktionieren alle Funktionen die auf den ordner javazoom zugreifen nicht.
Ich bin selbst kein Anfänger mehr, aber dieses Problem habe ich selbst noch nie gehabt!
Glg und danke nochmal für eure raschen Antworten


----------



## guggy (7. Aug 2009)

In diesen Programm sind Methoden die ich verwende um mp3s abzuspielen.
Dies ist nur zum Vererben gedacht.
In meinen Demo greif ich auf son3 zurück. 
Song3 greift aber auf javazoom zurück.
z.b

```
import javazoom.jl.player.Player;
```
dies ist aber keine Vererbung, sondern wird nur importiert und hier ensteht wahrscheinlich das Problem das ich habe.

Also song 3:


```
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import javazoom.jl.player.Player;
import java.io.*;
import javazoom.jl.decoder.Bitstream;
import javazoom.jl.decoder.Header;

public class song3 
{
    private String filename;
    public Player player; 
    private Bitstream	bitstream ;
    public Header h;

    // constructor that takes the name of an MP3 file
    public song3(String filename) 
    {
        this.filename = filename;
    }
    
   //methoden
   public void close() { if (player != null) player.close(); }
   
   public int position(){return player.getPosition()/1000; }//gibt sekundenposition
   public boolean fertig(){return player.isComplete(); }//gibt true,wenn abgespielt
   
   public int getlensec()
   	{        File fil=new File(filename);
			 try{h = bitstream.readFrame();
   	            System.out.println("Samplefrequency = "+h.frequency());
   	            //System.out.println(h.sample_frequency());
   	    		}catch (Exception e) {}
   		 return (int)(h.total_ms((int)fil.length())/1000);
   	}
    // play the MP3 file to the sound card
    public void play() 
    {
        try {
            FileInputStream fis     = new FileInputStream(filename);
            BufferedInputStream bis = new BufferedInputStream(fis);
            player = new Player(bis);
            bitstream = new Bitstream(bis);
            }
        catch (Exception e) {
            System.out.println("Problem playing file " + filename);
            System.out.println(e);
        }
      
        // run in new thread to play in background
        new Thread() {
            public void run() {
            	
            	try {player.play(); }
            	catch (Exception e) { System.out.println(e); }
            }
            
        }.start();
       
	}
}
```


----------



## guggy (7. Aug 2009)

Und hier noch das Demo:


```
public class songdemo
{
	public static void main (String args[])
	{
		song3 song = new song3("girlfun.mp3");
		song.play();

	}
}
```

Aber beim Demo liegt glaube ich nicht das Problem!
mfg


----------



## guggy (19. Aug 2009)

kann mir wirklich keiner helfen??

glg


----------



## tuxedo (19. Aug 2009)

Doch, aber solange du Ebenius' Tipps ignorierst wird wohl nix draus. Du solltest also die Ärmel hochkrempeln und versuchen zu verstehen was man von dir möchte.
"Von nix kommt nix". Ein vermutlich altes, aber offenbar sinnergebendes Sprichwort. 

- Alex


----------

