Desktop.open(file) hängt

Guybrush Threepwood

Top Contributor
Hi,
ich konnte ein merkwürdiges "Verhalten" der Desktop-Klasse auf einem neuen Win7 (professional, 64Bit, aktuelle Java7-JRE) beobachten: Während bislang in meinen Anwendungen problemlos Desktop.open(file) ein Explorer-Fenster öffnete und das im file-Objekt angegebene Verzeichnis anzeigte, hängt das Programm beim aktuellen Rechner komplett. Der EDT ist blockiert, es öffnet sich kein Explorer-Fenster und man kann das Programm nur noch abschießen. Es wird auch keine Exception geworfen oder sonst was. Desktop ist natürlich supported und die betreffenden Programme laufen auf allen mir zur Verfügung stehenden Rechnern (von MacOS X, WinXP, Win Vista, anderer Win7-PC und Ubuntu) fehlerfrei. Woran könnte das liegen? Der Rechner ist absolut neu und frisch installiert. Er funktioniert ansonsten tadellos.

Viele Grüße,
Guybrush
 
Welches Verzeichnis hast du denn gewählt. Ich glaube mich zu erinnern dass es mit den User/System Verzeichnissen von Windows mit ihren besonderen Berechtigungen und ihren doppelnamen zu Problemen kommen kann. Z.B geht entweder C:\Programme oder C:\Program Files nicht.
 
Es geht um Benutzerverzeichnisse, in denen Konfigurationsdateien, Datenbanken etc. abgelegt sind, also etwas wie z. B. c:\users\administrator\AppData\Roaming\MeinProgramm. Leerzeichen kommen darin nicht vor, aber ich werde dem nachgehen. Die notwendigen Rechte sollten eigentlich auch vorhanden sein.

P.S.: Gerade getestet. Spaces scheinen kein Problem zu sein. Zumindest funktioniert es auf anderen Win7-PCs
 
Zuletzt bearbeitet:
Hmmm und Windows Update ist schon mal durchgelaufen?
Mir is es übrigens nich um die Leerzeichen gegangen sondern darum, dass in Windows 7 manche Ordner quasi doppelt da sind. Users/Benutzer wär noch so eins. Wenn du dir mal alle Systemdateien z.B von C:\ anzeigen lässt siehst dus.
 
Zuletzt bearbeitet:
Es ist wirklich merkwürdig. Der Fehler scheint nicht allzu häufig aufzutreten, aber im Netz finden sich einige Berichte dazu. Es ist ein Problem, das wohl ausschließlich auf Windows beim Öffnen von Verzeichnissen auftritt, z. B. Bug ID: 6457572 JVM crashes when invoking java.awt.Desktop.getDesktop().browse()
Ich konnte die Ursache nicht herausfinden. Im obigen Link gibt es einen Workaround, nämlich etwas in dieser Form:
Java:
if (OSValidator.isWindows()){
	String cmd = String.format( "cmd.exe /C start \"Open file\" \"%s\"", path );
	Runtime.getRuntime().exec( cmd );
}
else
	Desktop.getDesktop().open(new File(path + File.separator));
 

Zurück
Oben