Desktop-Api: Problem mit open() und Umlauten

Status
Nicht offen für weitere Antworten.

Daniel_L

Bekanntes Mitglied
Hallo,

kann es sein, dass die Desktop-Api keine Umlaute kennt? Ich habe folgenden Code (Ausschnitt):
Code:
// check whether opening a file is supported or not
if (!desk.isSupported(Desktop.Action.OPEN)) {
  // display error message box
  JOptionPane.showMessageDialog(getFrame(),getResourceMap().getString("errLinkUnsopportedMsg"),
         getResourceMap().getString("errLinkUnsopportedTitle"),JOptionPane.ERROR_MESSAGE);
  return;
  }
desk.open(linkfile);

Wenn ich eine Datei ohne Umlaute habe, öffnet er sie problemlos. Sobald ich aber diese Datei umbenenne und sie einen Umlaut erhält, kommt es beim Versuch, die Datei zu öffnen, zu folgender Fehlermeldung:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException:
Non-Java exception raised, not handled!
(Original problem: *** -[NSCFArray initWithObjects:count:]:
attempt to insert nil object at objects[0]) 

at apple.awt.CDesktopPeer._lsOpen(Native Method) 
at apple.awt.CDesktopPeer.lsOpen(CDesktopPeer.java:53) 
at apple.awt.CDesktopPeer.open(CDesktopPeer.java:33) 
at java.awt.Desktop.open(Desktop.java:254) 
at zettelkasten.ZettelkastenView.eventHyperlinkActivated(ZettelkastenView.java:9609) 
at zettelkasten.ZettelkastenView.access$6000(ZettelkastenView.java:119) 
at zettelkasten.ZettelkastenView$14.hyperlinkUpdate(ZettelkastenView.java:7014)

Den oben geposteten Code-Ausschnitt habe ich mit try/catch umgeben und fange eigentlich alle Exceptions ab:
Code:
            catch (IOException e) {
            catch (IllegalArgumentException e) {
            catch (SecurityException e) {
            catch (UnsupportedOperationException e) {
            catch (URISyntaxException e) {

Die Pfadangabe ist ganz sicher nicht falsch, da ich die Datei mit einem FileChooser öffne - außerdem wäre dann ja eine der oben abgefangenen Exceptions aufgetreten.

Das Problem taucht nur auf, wenn ich eine Datei mit Umlaut auswähle...

Ich selber nutze Mac OS X 10.5.5 mit Java 6, aber das Problem tauchte auch schon auf einem Linux-System auf (vermutlich auch da wird es an den Umlauten gelegen haben...)

Weiß jemand Rat?

Vielen Dank und Gruß
Daniel
 

Ebenius

Top Contributor
Das konnte ich bisher nicht nachvollziehen. Ich gehe davon aus, Du hast die Datei vor "desktop.open(linkfile);" schon einmal ausgeben...
 

Ebenius

Top Contributor
Jetzt hab ich's probiert und kann es auf meinem Linux nachvollziehen... :cry: Habe in der Shell zwei Dateien angelegt:
Code:
cd /home/ebenius
echo "Huhu" > a
echo "Huhu" > ä

Mein Java Code legt diese File-Objekte an:
Code:
final File dir = new File("/home/ebenius");
final File file1 = new File(dir, "a");
final File file2 = new File(dir, "doesnt_exist");
final File file3 = new File(dir, "ä");

Folgende Tests hab ich gemacht:

1. :toll: File Browser öffnen funktioniert bestens:
Code:
Desktop.getDesktop().open(dir);

2. :toll: File "a" öffnen funktioniert bestens:
Code:
Desktop.getDesktop().open(file1);

3. :toll: File "doesnt_exist" öffnen funktioniert nicht; wie erwartet:
Code:
Desktop.getDesktop().open(file2);
Mein Programm hat gesagt.:
Exception in thread "main" java.lang.IllegalArgumentException: The file: /home/ebenius/doesnt_exist doesn't exist.
at java.awt.Desktop.checkFileValidation(Desktop.java:191)
at java.awt.Desktop.open(Desktop.java:252)
at com.ebenius.A.main(A.java:263)

4. :bloed: File "ä" öffnen funktioniert nicht:
Code:
Desktop.getDesktop().open(file3);
Mein Programm hat gesagt.:
Exception in thread "main" java.io.IOException: Failed to show URI:file:/home/ebenius/ä
at sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:75)
at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:43)
at java.awt.Desktop.open(Desktop.java:254)
at com.ebenius.A.main(A.java:263)

System-Informationen:
GNU/Linux / SuSE 10.3
Code:
$ uname -a
Linux steevie 2.6.22.18-0.2-default #1 SMP 2008-06-09 13:53:20 +0200 x86_64 x86_64 x86_64 GNU/Linux

$ java -version
java version "1.6.0_10"
Java(TM) SE Runtime Environment (build 1.6.0_10-b33)
Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)

$ X -version

X Window System Version 7.2.0
Release Date: Tue Jun  3 00:06:06 UTC 2008
X Protocol Version 11, Revision 0, Release 7.2
Build Operating System: openSUSE SUSE LINUX
Current Operating System: Linux steevie 2.6.22.18-0.2-default #1 SMP 2008-06-09 13:53:20 +0200 x86_64
Build Date: 03 June 2008
        Before reporting problems, check [url]http://wiki.x.org[/url]
        to make sure that you have the latest version.
Module Loader present

Habe die Sun Bug Database mit "desktop.open" durchsucht. Gibt ein paar Bugs die in die Richtung gehen. Aber mir scheint's nicht das Problem zu treffen. Machst Du nen Bug Report, bzw. suchst nochmal selber?

Ebenius
 
S

Spacerat

Gast
Ganz Gallien? Oh sorry... falscher Film...

Aber mal Scherz beiseite. Du fängst da möglicherweise nur die Exceptions ab, die dir von der IDE her vorgeschlagen werden. Die Exception die dort geworfen wurde ist eine "RuntimeException". Exceptions dieser Art werden eigentlich für die JRE geworfen, wo sie letztenendes auch abgefangen werden. Deswegen benötigen sie auch keine "throws"-Klausel in der Methodendeklaration.
Das Problem mit den Umlauten lässt den schluss zu, das Codepage der Anzeige nicht mit jener des Dateisystems übereinstimmt. Die meisten Betriebssysteme trennen die Codepages der Anzeige von denen der Dateisysteme, um den Import von fremden Dateisystemen zu ermöglichen. Hier kann man für beides auch durchaus verschiedene Werte setzen. Die Vor- und Nachteile der Einbindung eines Dateisystems mit "falscher" Codepage (sprich verschiedene Werte zu setzen) sind aber eher fragwürdig als hilfreich, wie man hier sieht.

mfg Spacerat
 

Ebenius

Top Contributor
Spacerat hat gesagt.:
Ganz Gallien? Oh sorry... falscher Film...
:) Hab alle Einträge gelesen die bei "desktop.open" kommen; ich glaube es waren 14.

Spacerat hat gesagt.:
Das Problem mit den Umlauten lässt den schluss zu, das Codepage der Anzeige nicht mit jener des Dateisystems übereinstimmt. Die meisten Betriebssysteme trennen die Codepages der Anzeige von denen der Dateisysteme, um den Import von fremden Dateisystemen zu ermöglichen. Hier kann man für beides auch durchaus verschiedene Werte setzen. Die Vor- und Nachteile der Einbindung eines Dateisystems mit "falscher" Codepage (sprich verschiedene Werte zu setzen) sind aber eher fragwürdig als hilfreich, wie man hier sieht.
Mein System ist vollständig UTF-8. Und außerdem muss das egal sein, ich in der Java-Desktop-API ein File-Objekt übergebe, welches per File.exists() existiert.

Ebenius
 

Daniel_L

Bekanntes Mitglied
Ich überprüfe vorher bereits, ob die Datei existiert und habe die Methode auch schon Schritt-für-Schritt debugged. File.exists() gibt true zurück, desktop.open() wirft diese Exception.

Unter Linux (KDE) scheint es noch zusätzliche Probleme zu geben:
http://forums.sun.com/thread.jspa?threadID=5336551

Ich werde mal weiter recherchieren und wenn ich nichts finde, einen Bug-Report eröffnen, denke ich...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Desktop open() - Problem mit Media Player Allgemeine Java-Themen 4
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
T linux problem mit Desktop.getDesktop().open(..) Allgemeine Java-Themen 5
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
Neumi5694 Desktop.getDesktop().open(...); Allgemeine Java-Themen 0
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
KrokoDiehl Desktop.open() und warten? Allgemeine Java-Themen 3
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 bug? datei oeffnen nicht Desktop.open Allgemeine Java-Themen 3
M java.awt. Desktop browse lokale datei aus jar Allgemeine Java-Themen 4
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 7
Daniel_L Fehler in Desktop.getDesktop().open()? Allgemeine Java-Themen 3
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
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 4
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
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
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
T PIM basierend auf netbeans via AnyDesk Problem Allgemeine Java-Themen 3
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
Kirby.exe Verständnis Problem bei Rucksack Problem Allgemeine Java-Themen 6
B Eclipse-Lombok-Problem Allgemeine Java-Themen 19
I Input/Output ObjectOutputStream - Problem Allgemeine Java-Themen 7
1 Multiple Choice Knapsack- Problem Allgemeine Java-Themen 2
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
E Problem mit Gridlayout und Button Allgemeine Java-Themen 2
A Array Problem Allgemeine Java-Themen 8
bueseb84 Problem Allgemeine Java-Themen 0
S Problem mit Arrays Allgemeine Java-Themen 1
D Nullpointer Exception Problem Allgemeine Java-Themen 5
B Problem mit meinen Klassen Allgemeine Java-Themen 6
A HashMap Methode "get()"-Problem Allgemeine Java-Themen 28
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
J Problem bei Install java 13 Allgemeine Java-Themen 3
X Profitable Reise Problem Allgemeine Java-Themen 32
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
L Klassen Algorithmus für das folgende Problem entwickeln? Allgemeine Java-Themen 30

Ähnliche Java Themen

Neue Themen


Oben