Hallo zusammen,
ich habe in meiner Applikation den Aufruf um ein File mit dem Standardeditor zu öffnen.
Dieser Aufruf funktioniert bei acht Mitarbeitern, nur bei einem nicht. Es passiert rein gar nichts.WIr sind hier alle im selben Büro, haben dieselben Laptops und gleiche Installationen drauf (WinXP, SP3 und JRE 1.6.0.10).
liefern beide true zurück bei diesem Mitarbeiter.
— Andere Methoden wie mail() und browse() funktionieren, edit() allerdings auch nicht.
— Throwable catchen nützt nichts, ich bekomme keinen Fehler
— Im Task Manager ist kein Prozess des verknüpften Editors zu sehen, es wird also nichts gestartet
— Den Fehler bemerkt haben wir bei «.txt» Dateien, diese Dateiendung wird bei diesem Benutzer standardmässig mit Codewrite geöffnet. Die Dateiendung mit gar keinem Programm zu verknüpfen, Ultraedit, Notepad und noch einigen anderen haben auch nicht geholfen. Auch mit z. B. «.xls» Dateien, die mit MS Office Excel verknüpft sind, funktioniert es nicht.
— In der Registry haben wir keine Anpassungen gemacht, welche und wie die Parameter der exe übergeben werden. Dia Dateitypzuordung haben wir immer über den Windows Explorer geändert.
oder irgendein anderer Befehl funktioniert.
Danach habe ich ein bisschen tiefer gegraben und per Google die DLL Aufrufe
gefunden. Einer der beiden wird wahrscheinlich von Java bei der Windows Implementation schlussendlich aufgerufen. Diese kann ich per cmd und auch von Java per Runtime#exec() ohne Probleme bei diesem Benutzer aufrufen. Die Shell32.dll ist genau die gleiche wie bei mir und alle Dateien im JRE Verzeichnis sind laut einem Binärvergleich genau gleich, er hat die Java Installation also nicht putt gemacht (neu installieren können wir leider nicht einfach, aber es sollte alles korrekt sein).
Ich bin jetzt soweit, dass ich halt den rundll32 Aufruf implementiert habe, da die Applikation sowieso nur auf Windows läuft. Die Lösung des Problems würde mich jedoch doch noch interessieren, da ich viel Zeit in die Fehlersuche investiert habe. Hat noch jemand eine Idee, was bei diesem Benutzer anders sein könnte und den Fehler verursacht?
Ich habe noch eine andere native Implementierung der Shellexec für Windows gefunden: http://www.heimetli.ch/shellexec.html. Der Aufwand, um das noch zu testen, wäre für mich wahrscheinlich zu hoch, da ich keine Ahnung habe was ich wie ersetzen müsste etc. Keine Ahnung also ob das funktionieren würde.
Besten Dank.
ich habe in meiner Applikation den Aufruf um ein File mit dem Standardeditor zu öffnen.
Java:
Desktop.getDesktop().open(fileToOpen);
Java:
Desktop.isDesktopSupported();
Desktop.getDesktop().isSupported(Desktop.Action.OPEN);
— Andere Methoden wie mail() und browse() funktionieren, edit() allerdings auch nicht.
— Throwable catchen nützt nichts, ich bekomme keinen Fehler
— Im Task Manager ist kein Prozess des verknüpften Editors zu sehen, es wird also nichts gestartet
— Den Fehler bemerkt haben wir bei «.txt» Dateien, diese Dateiendung wird bei diesem Benutzer standardmässig mit Codewrite geöffnet. Die Dateiendung mit gar keinem Programm zu verknüpfen, Ultraedit, Notepad und noch einigen anderen haben auch nicht geholfen. Auch mit z. B. «.xls» Dateien, die mit MS Office Excel verknüpft sind, funktioniert es nicht.
— In der Registry haben wir keine Anpassungen gemacht, welche und wie die Parameter der exe übergeben werden. Dia Dateitypzuordung haben wir immer über den Windows Explorer geändert.
Java:
Runtime.getRuntime().exec("notepad" + fileToOpen.getAbsolutePath());
Danach habe ich ein bisschen tiefer gegraben und per Google die DLL Aufrufe
Code:
rundll32 SHELL32.DLL,ShellExec_RunDLL <file>
rundll32 URL.DLL,FileProtocolHandler file:<file>
Ich bin jetzt soweit, dass ich halt den rundll32 Aufruf implementiert habe, da die Applikation sowieso nur auf Windows läuft. Die Lösung des Problems würde mich jedoch doch noch interessieren, da ich viel Zeit in die Fehlersuche investiert habe. Hat noch jemand eine Idee, was bei diesem Benutzer anders sein könnte und den Fehler verursacht?
Ich habe noch eine andere native Implementierung der Shellexec für Windows gefunden: http://www.heimetli.ch/shellexec.html. Der Aufwand, um das noch zu testen, wäre für mich wahrscheinlich zu hoch, da ich keine Ahnung habe was ich wie ersetzen müsste etc. Keine Ahnung also ob das funktionieren würde.
Besten Dank.