Desktop open() - Problem mit Media Player

GG

Mitglied
Hallo,
meine Anwendung lädt avi-Dateien vom Host in das lokale Benutzer-Temp-Verzeichnis und startet die Wiedergabe mit
Java:
Desktop.getDesktop().open(new File(...));
Das klappt auch prima, außer unter Win7 mit dem Windows Media Player. Da bekomme ich eine IOException "Zugriff verweigert". Jede andere Standard-Applikation (VLC, Windows Media Center, Videopad, ..) funktioniert.
Das Löschen der Datei bei Programm-Exit macht in keinem Fall Probleme.
Ich stehe da fassungslos davor.

Möglicherweise ist das kein richtiges Java.Problem, aber vielleicht fällt einem von Euch ja etwas dazu ein.

danke schonmal
Gus
 
N

nillehammer

Gast
Habe es gerade mal ausprobiert. Konnte den Fehler leider nicht reprodutzieren. Der verwendete Temp-Ordner war bei mir: C:/Users/<meinUserName>/AppData/Local/Temp/
Bei dem Aufruf werden ja mindestens zwei Dateien "gelesen" einmal Dein avi und die wmplayer.exe. Wenn du sagst, dass das avi sonst keine Probleme macht: Vielleicht darf Dein User den wmplayer.exe nicht starten... bischen schwach, geb ich zu, aber was besseres fällt mir grad nicht ein. Steht denn in der IOException nicht etwas mehr dazu, welche Datei es ist?
 
Zuletzt bearbeitet von einem Moderator:

GG

Mitglied
nillehammer, danke auf jeden Fall fürs Ausprobieren, in der Exception steht die avi-Datei.
Ich habs jetzt auf einem XP ausprobiert, das wird immer mysteriöser:
der open zieht immer VLC, egal was ich eingestellt habe (und bei Doppelklick auch gestartet wird..)
Ich muss da morgen nochmal tiefer graben....
 

Bernd Hohmann

Top Contributor
2x Kristallkugel:

1) Win7: Nach dem abholen vom Host wurde die Datei nicht zugemacht

2) XP: Kommt der VLC auch wenn die Entwicklungsumgebung (oder besser noch das ganze XP) neu gestartet wurde?

Alternativ nicht über den Desktop gehen sondern die üblich verdächtigen Pfade nach gängigen Playern durchsuchen, Liste anbieten und selber den Prozess starten.

Bernd
 

GG

Mitglied
So, jetzt habe ich mal Eure Anmerkungen aufgegriffen (danke Bernd) und ein Programm geschrieben, das mir einige Erkenntnisse gebracht hat, aber der ursprüngliche Effekt ist stabil dubios.
Button SWT: ermittelt die Anwendung, die mit .avi-verknüpft ist und startet sie.
Button AWT: öffnet die .avi-Datei über Desktop open.
Es ist eine kleine, eigene Videodatei, die ich in c:\ gelegt habe.
Ergebnis:
- SWT klappt immer (auch bei Änderungen in der Datei-Zuordnung ohne Neustart des Programms)
- AWT reagiert je nach OS unterschiedlich:
-- XP: startet das "Standard-Programm", auch wenn die Zuordnung geändert ist (deshalb "immer" VLC)
-- Win7: machts richtig, außer mit Media Player (Zugriff verweigert)
Ich füge das Programm mal an.
Die Sache mit der Dateizuordnung Standard/Suffix kann ich bei Bedarf erklären. Ist aber etwas lang...

Java:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.reflect.Field;
import javax.swing.*;
import org.eclipse.swt.program.Program;

class AviTest {

    static final String FN_AVI = "c:\\Test.avi";
    static JLabel lbErr = new JLabel();
    static AppLabel lbApp;
    static int wApp, wErr;
    
	public static void main(String[] args) throws Exception {
				
	    final JFrame f = new JFrame("AVI Test");
	    f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	    f.setLayout(null);
		
	    lbApp = new AppLabel(20, 20);
	    wApp = lbApp.update();
	    f.add(lbApp);
	    
		JButton btnSWT  = new JButton("SWT execute");
		btnSWT.addActionListener(new ActionListener() {
		    @Override
		    public void actionPerformed(ActionEvent e) {
/*
 * 			SWT				
 */
		        wApp = lbApp.update();
			f.setSize(new Dimension(Math.max(wApp, wErr)+100, 200));
			lbApp.getAviApp().execute(FN_AVI);	}
		});
		btnSWT.setBounds(20, 50, 150, 30);
		f.add(btnSWT);
		
		lbErr.setLocation(20, 140);
		lbErr.setForeground(Color.RED);
		f.add(lbErr);
		
		JButton btnAWT = new JButton("AWT open");
		btnAWT.addActionListener(new ActionListener() {
		    @Override
		    public void actionPerformed(ActionEvent e) {
		    try { 
/*
* 			AWT				
*/
		        Desktop.getDesktop().open(new File(FN_AVI)); 
		        }
		        catch (IOException | IllegalArgumentException err) {
		            String s = err.getMessage();
		            wErr = lbErr.getFontMetrics(lbErr.getFont()).stringWidth(s);
			    f.setSize(new Dimension(Math.max(wApp, wErr)+100, 200));
		            lbErr.setSize(wErr, 20);
		            lbErr.setText(s); 
		        }
		    }
		});
		btnAWT.setBounds(20, 100, 150, 30);
		f.add(btnAWT);
		
		f.setSize(new Dimension(Math.max(wApp, wErr)+100, 200));
 		f.setVisible(true);
	}
}
 	class AppLabel extends JLabel {
		private static final long serialVersionUID = 1L;
		
		private Program aviApp;
 		private int x, y;
 		
 		AppLabel(int x, int y) {
 		    this.x = x;
 		    this.y = y;
 		}
 		
 		int update() {
 		    aviApp = Program.findProgram(".avi");
 		    Field commandField = null;
 		    String cmdText = null;
			try {
				commandField = Program.class.getDeclaredField("command");
			} catch (NoSuchFieldException | SecurityException e) {e.printStackTrace(); }
 		        commandField.setAccessible(true);
			try {
				cmdText = (String)commandField.get(aviApp);
			} catch (IllegalArgumentException | IllegalAccessException e) { e.printStackTrace(); }
 		   	int w = getFontMetrics(getFont()).stringWidth(cmdText);
 		    setBounds(x, y, w, 20);
                   setText(cmdText);
                   return w;
 		}
 		
 		Program getAviApp() { return aviApp; };
 	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
T linux problem mit Desktop.getDesktop().open(..) Allgemeine Java-Themen 5
Daniel_L Desktop-Api: Problem mit open() und Umlauten Allgemeine Java-Themen 5
Neumi5694 Desktop.getDesktop().open(...); Allgemeine Java-Themen 0
KrokoDiehl Desktop.open() und warten? Allgemeine Java-Themen 3
M bug? datei oeffnen nicht Desktop.open Allgemeine Java-Themen 3
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 7
Daniel_L Fehler in Desktop.getDesktop().open()? Allgemeine Java-Themen 3
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 4
J Integration pay Pale in eine JavaFx Desktop Application Allgemeine Java-Themen 1
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
_user_q Verknüpfung einer .jar-Datei (liegt z. B. auf dem Desktop) im Autostart-Ordner erstellen? Allgemeine Java-Themen 20
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
R Java-Forum als Desktop-Background Allgemeine Java-Themen 4
OnDemand Desktop-Applikation schreiben, wie daten persistent? Allgemeine Java-Themen 9
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
D Ordner auf Desktop erstellen(Pc unabhängig) Allgemeine Java-Themen 5
M Desktop Symbole ein / ausblenden Allgemeine Java-Themen 1
I Desktop browse(URI uri) Allgemeine Java-Themen 8
N Robotklasse nur auf Desktop Allgemeine Java-Themen 2
Z Desktop anzeigen + Screenshot klappt nicht Allgemeine Java-Themen 3
R Base::Config-Fehler bei Desktop-Klasse Allgemeine Java-Themen 8
G Desktop.getDesktop() und Standardprogramme Allgemeine Java-Themen 4
hdi Listener für Desktop-Veränderungen Allgemeine Java-Themen 7
S (Doppel)Klick-Verhalten vom Desktop unter Java imitieren. Allgemeine Java-Themen 5
M java.awt. Desktop browse lokale datei aus jar Allgemeine Java-Themen 4
M Desktop mail attachments Allgemeine Java-Themen 3
D Anwendung startet im Remote Desktop nicht Allgemeine Java-Themen 14
M SMS aus Desktop-Anwendung verschicken Allgemeine Java-Themen 8
W Anteil Desktop-PCs mit Java Allgemeine Java-Themen 12
R Jar-File vom Linux Desktop durch ancklicken starten? Allgemeine Java-Themen 5
M Klasse Desktop geht nicht mehr (EXCEPTION_ACCESS_VIOLATION) Allgemeine Java-Themen 9
H Mit Java Desktop abmessungen height/width abfragen Allgemeine Java-Themen 20
M eigenen Desktop erzeugen Allgemeine Java-Themen 3
ARadauer Java Desktop Framework Allgemeine Java-Themen 3
A State-of-the-Art Techniken für Desktop Programme ? Allgemeine Java-Themen 3
F Desktop Shortcut (*.lnk) erstellen? Allgemeine Java-Themen 11
M Desktop-Informationen Allgemeine Java-Themen 2
G Desktop-Icon erstellen? Allgemeine Java-Themen 5
G Programmpfad auslesen und Desktop-Icon erstellen? Allgemeine Java-Themen 3
G Java Fenster öffnen nach Iconklick(desktop) (helppls) Allgemeine Java-Themen 3
S Film vom Desktop erstellen Allgemeine Java-Themen 6
K Unterschied Core Java / Desktop Allgemeine Java-Themen 12
F Mehrere Versionen von Java auf einem W2K Desktop Allgemeine Java-Themen 3
B desktop auf monitor erweitern Allgemeine Java-Themen 22
D desktop nach ändern des hintergrunds aktualisieren Allgemeine Java-Themen 3
D Open Source Library zum erstellen von PDFs Allgemeine Java-Themen 1
C Microsoft unterstützt Open JDK Allgemeine Java-Themen 7
ms_cikar JavaOSC (Open Sound Control) Allgemeine Java-Themen 1
M Umstieg Oracle JDK zu Open JDK Allgemeine Java-Themen 20
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
J Druckvorgang mit Java beenden (Open Office) Allgemeine Java-Themen 3
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
M Open Source Projekte => wo herunterladen? Allgemeine Java-Themen 2
M Open Source Projekte / source - binaries Allgemeine Java-Themen 13
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
C Open Soure Projekte für parallele Programmierung Allgemeine Java-Themen 6
K associate collection with two open sessions Allgemeine Java-Themen 12
A Open Office Formeln Allgemeine Java-Themen 7
D Ersetzen in Open Office Dokument Allgemeine Java-Themen 2
A External Sort - too many open files Allgemeine Java-Themen 6
1 Java <-> Open Office Allgemeine Java-Themen 5
J Open Source Projekt anbieten - Leitfaden gesucht Allgemeine Java-Themen 3
J Too many open files Allgemeine Java-Themen 11
J Too many files open Allgemeine Java-Themen 4
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
K "Too many open files" bei Property List Allgemeine Java-Themen 5
MasterEvil Open Office Converter Allgemeine Java-Themen 11
Y Open Source Plattformen Allgemeine Java-Themen 4
C [javax.mail] Folder not open Allgemeine Java-Themen 2
L Open Source Projekt Allgemeine Java-Themen 7
S Runtime exec unter MacOS X will nicht "open pfad" Allgemeine Java-Themen 7
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
J integration in Open Office Allgemeine Java-Themen 2
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12

Ähnliche Java Themen


Oben