Datei aus Java in anderem Programm öffnen

LP_SE

Aktives Mitglied
Hallo,

Ich habe folgendes Problem: Ich bin dabei, mir eine Verwaltung für meine Musiksammlung zu Programmieren. Dabei möchte ich Audio-Dateien öffnen. Da es mir zu Aufwändig ist einen Mp3-Player zu schreiben (und da ich das noch lernen müsste), will ich die Dateien mit WindowsMediaPlayer oder vlc-player öffnen. Programme habe ich bis jetzt immer mit
Java:
Runtime.getRuntime().exec(pfad); //pfad = pfad zur .exe
ausgeführt. Doch wie öffne ich jetzt Dateien mit dem Standardprogramm für diesen Dateityp (oder alternatives Programm, sollte man wenn möglich wählen können) aus Java heraus.
Schonmal Danke im Voraus für eure Hilfe!
 
Zuletzt bearbeitet:
So hab nochmal ein Problem dazu:
nachdem ich jdic eingebunden habe und alles funktioniert, hab ich mir von Netbeans ein Executable-JAR-File erstellen lassen, inklusive des Ausgabeordners "dist" verschoben und diesen umbenannt. wenn ich nun das Jar-File audführe funktioniert alles, außer dem Abspielen der Titel.
Das Programm funktioniert nur, wenn es von Netbeans ausgeführt wird.
P.S.: ja, der lib-Ordner mit den Jar-Bibliotheken ist noch im Verzeichnis
 
Zuletzt bearbeitet:
Starte mal deine Jar-Datei auf der Console mit folgendem Befehl:
Code:
java -jar DeinJar.jar
Gibts dann Fehlermeldungen?
 
Das Programm funktioniert und bringt keine Fehler, aber das abspielen funktioniert nur in netbeans und nich beim JAR-File
 
ich habe es jetzt mal mit den Java-eigenen Funktionen versucht und mir das neue Java gedownloadet, es funktioniert nicht :-(

hier ist mein Code:
Java:
        private Desktop D = Desktop.getDesktop();
        private File Akt = null;

//Rest vom Code, nicht relevant () Akt wird initialisiert
    if(Akt != null) {
        try {
            D.open(new File(Akt.toString()));
        } catch (IOException ex) {
            Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

und hier die Exception:
Code:
05.05.2010 17:02:06 Logic.Manager playTrack
SCHWERWIEGEND: null
java.io.IOException: Failed to open file:/M:/Musik/___Sonstiges/Green%20Day/Green%20Day%20-%20'21%20Guns'%20(Official%20Music%20Video)%20HD.mp3. Error message: Unbekannter Fehler

        at sun.awt.windows.WDesktopPeer.ShellExecute(WDesktopPeer.java:59)
        //und so weiter (falls benötigt kan ich das ja noch posten)
 
Zuletzt bearbeitet:
Dachte ich mir doch...
Deine Musikdatei kann nicht eingelesen werden.
Setze zum Testen die Datei mal in dein Projektverzeichnis, gib ihr einen vernünftigen Namen und versuchs noch mal.
 
Das funktioniert auch nicht, außerdem bringt mir auch dann nicht viel, wenn es funktioniert, da ich damit ja meine Musiksammlung verwalten will und der ganze ordner M:\Musik verwaltet wird (ca. 10GB). Und wenn das jetzt im Projektverzeichnis steht hab ich noch mehr unordnung, das hab ich shon halbwegs logisch da gespeichert. Also als Lösung nicht so geeignet
 
Vielleicht zeigst du doch mal den Code, wo Akt befüllt wird.

Gibt es eigentlich einen Grund,warum du
Java:
D.open(new File(Akt.toString()))
schreibst und nicht einfach
Java:
D.open( Akt)
 
also Akt wird aus einer ArrayList (mit Files) selektiert.
Java:
    public void first() {                //Das ist nur eine der methoden zum befüllen von Akt
        index = 0;                        
        Akt = Found.get(index);
    }
Das new File(Akt.toString()) hab ich gemacht, da einfach nur Akt nicht funktionierte, könnte ja sein das es da dran lag, hat aber auch nichts geholfen. Also das D.open() funktioniert mit .jpg-s mit .gif-s mit.txts (auch .ini-s) usw, aber nicht mit mp3s?
woran könnte das liegen? Ich hab WMP mal nochmal als standardprogramm gesetzt und es funktioniert immer noch nicht.
Bin echt ratlos.
 
Zuletzt bearbeitet:
/M:/Musik/___Sonstiges/Green%20Day/Green%20Day%20-%20'21%20Guns'%20(Official%20Music%20Video)%20HD.mp3

Das sieht komisch aus.. Eigentlich müsste das so aussehen:

M:/___Sonstiges/....

und nicht:

/M:/_____Sonstiges/...

Die richtige Syntax ist :

Java:
File f = new File("C:\\Windows\\test.txt");

nur mal so als Beispiel....

HTH

WhiTeY
 
Die Files sind schon richtig geschrieben, sonst wären de
ie anderen nicht da. ich nehme sie so aus dem Verzeichnis:
Java:
    private void rekDirs(File file) {
        File[] F = null;
        if(file.isDirectory()) {
            F = file.listFiles();
            FolderList.add(file);
            for(int i=0; i<F.length; i++) {
                rekDirs(F[i]);
            }
        }
    }

    private void initMp3s() {
        for(File f:FolderList){
            File[] F = f.listFiles();
            for(int i=0; i<F.length; i++){
                if(F[i].isFile()) MP3List.add(F[i]);
            }
        }
    }

    private void initDirs() {
        rekDirs(new File("M://Musik"));
    }

    private void init() {
        initDirs();
        initMp3s();
    }

Das ganze spielt sich in einer IO-Klasse ab, die die MP3-List an meine eigentliche Logik weitergibt. Wenn das mit dem Pfad also nicht stimmt, müssten die anderen Dateien auch nicht funktionieren, da ich andere Dateien(albumcover) zum Test auch reinnehme (keine Abfrage auf mp3 oder wma). Und die "%20" in der Exception sind im normalen Pfad eigentlich Leerzeichen(werden so auch bei Akt.toString() ausgegeben, sind nur bei der exception falsch).
 
nicht die %20 haben mich gestört sondern der Führende Slash und vor allem das es kein backslash ist..... Wenn ich eine Test Exception auslöse mit einer Datei die es Nicht gibt sieht das so aus :

Code mit Datei die Es nicht Gibt:
Java:
package test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class testclass {
public static void main(String[] args) {
    File f = new File("C:\\test.txt");
    try {
        FileReader r = new FileReader(f);
        r.read();
    } catch (Exception e) {
        
        e.printStackTrace();
    }
}
}
Exception:
Java:
java.io.FileNotFoundException: C:\test.txt (Das System kann die angegebene Datei nicht finden)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileReader.<init>(Unknown Source)
	at test.testclass.main(testclass.java:12)

Ich gehe mal davon aus das du Windows nutzt und das es eine Deutsche version ist, nun vergleichen wir mal:

Deins:
/M:/Musik/___Sonstiges/Green%20Day/Green%20Day%20-%20'21%20Guns'%20(Official%20Music%20Video)%20HD.mp3
Meins:
C:\test.txt

Fällt dir was auf? Da Stimmt auf jeden fall mit dem Pfad was nicht !!
 
ich hab das jetzt mal so getestet:
Java:
        try {
            D.open(new File("C:\\a.mp3"));
        } catch (IOException ex) {
            Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, ex);
        }

        // so hab ich das auch probiert:
        try {
            D.open(new File("C://a.mp3"));
        } catch (IOException ex) {
            Logger.getLogger(Manager.class.getName()).log(Level.SEVERE, null, ex);
        }

Aber es gibt immer wieder die gleiche exception mit dem gleichen Pfadnamen-Fehler

P.S.: Die Datei C:\a.mp3 existiert und ich hab keine Schreibfehler in irgendeinem Pfad
 
Verwende am Besten File.separator statt /, //, \ oder sonstigen Pfadtrennern. Damit solltest Du auf der sicheren Seite sein, also z. B.
Java:
D.open(new File("C:" + File.separator + "a.mp3"));
 
Zuletzt bearbeitet:
selbst mit File.seperator gibt es die Exception mit "/C:/a.mp3".

ich glaube nicht, das es am Pfad liegt, da wenn "Akt" (beim Code weiter oben) ein Bild oder eine andere Datei ist, funktioniert es einwandfrei.
 
Java:
System.out.println(Akt.exists());
Das liefert true zurück, genauso, wie:
Java:
System.out.println(new File("C:"+File.separator+"a.mp3").exists());
 
Hat niemand ne Idee?
Hab mal wieder mit jdic probiert, das funktioniert in Netbeans, aber als jar-File passiert dort auch nichts (wie oben erläutert).Bei der Java-Standard-Lösung funktioniert es auch nicht. Die File-Objekte existieren und sind richtig initialisiert. Aber bei Musikdateien geht das mit dem D.open() nicht. Alle anderen Dateien lassen sich öffnen. Könnte es vllt am Windows Media Player liegen?
Wäre für Hilfe sehr dankbar.
 

Neue Themen


Zurück
Oben