# Worddokument öffnen



## z.B. (14. Mai 2017)

Mit welchem Befehl öffne ich ein Worddokument, welches im selben Ordner wie mein Programm liegt ?


----------



## Robat (14. Mai 2017)

Öffnet dir das .doc File mit dem Standardprogramm für .doc Endungen


```
try {
    if (Desktop.isDesktopSupported()) {
      Desktop.getDesktop().open(new File("D:\\MyCoolDoc.doc"));
    }
   } catch (IOException ioe) {
    ioe.printStackTrace();
  }
```


----------



## z.B. (14. Mai 2017)

Danke für deine schnelle Antwort!
Muss ich immer das alles verwenden, oder langt die Ziele aus?


Robat hat gesagt.:


> Desktop.getDesktop().open(*new* File("D:*\\*MyCoolDoc.doc"));


----------



## mrBrown (14. Mai 2017)

Ja, du musst alles verwenden.
Kannst du aber einfach in eine Methode auslagern, dann ist der ganze Boilerplatecode versteckt


----------



## Ich123456789 (15. Mai 2017)

Das ist einfacher unter windows

```
Process p = Runtime.getRuntime().exec("cmd /c start Dateiname);
```


----------



## mrBrown (15. Mai 2017)

Ich123456789 hat gesagt.:


> Das ist einfacher unter windows
> 
> ```
> Process p = Runtime.getRuntime().exec("cmd /c start Dateiname);
> ```


Genauso unter jedem anderen OS, mit passendem Parameter. Aber warum nicht einfach das passendere nehmen?


----------



## Ich123456789 (15. Mai 2017)

Ich eollte dem ersteller die möglichkeit geben sich zu entscheiden (try-catch kann manchmal ziemlich nerven)


----------



## Robat (15. Mai 2017)

Ich123456789 hat gesagt.:


> try-catch kann manchmal ziemlich nerver


Was genau ist an try-catch nervig?


----------



## mrBrown (15. Mai 2017)

Schön programmieren ist halt meistens auf den ersten Blick aufwändiger


----------



## z.B. (15. Mai 2017)

Dankeschön für eure fleisigenAntworten.
Was ist den "schöner"?
Ich bekomme bei beiden die Fehlermeldung
error: unreported exception IOException; must be caught or declared to be thrown


----------



## Robat (15. Mai 2017)

z.B. hat gesagt.:


> error: unreported exception IOException; must be caught or declared to be thrown


Bei meiner Variante aus Post#2 sollte der Fehler eigentlich nicht kommen. Du fängst die IOException ja mit dem try-catch-Block ab.
Es ist aber richtig dass auch die `#exec()` Methode eine IOException wirft, d.h. du musst sie behandeln!


----------



## z.B. (15. Mai 2017)

Ich verstehe das nicht, ich bekomme die Fehlermeldung bei beiden.


----------



## Robat (15. Mai 2017)

Wie sieht denn dein Code aus? Das kann nämlich eigentlich nicht sein


----------



## z.B. (15. Mai 2017)

Was muss ich in Post 2 auser den Dokumentennamen alles ersetzen?
Welchen Teil des Codes ist intressant? Nur diese Methode? Bekome zu zu viele Fehlermeldungen.


----------



## Robat (15. Mai 2017)

Ja du musst nur den Pfad / den Dateinamen ersetzen.
Naja der Code den du eingefügt hast. Wenn du eine Methode hast die dein Dokument öffnen soll, dann ist genau die Methode interessant. 
Außerdem sind die von dir genannten Fehlermeldung auch interessant 

Gruß Robert


----------



## z.B. (15. Mai 2017)

```
public void methodeRegeln (){ //Methode zum Aufruf der Datei mit den Spielregeln.
    try {
      if (Desktop.isDesktopSupported()) {
      Desktop.getDesktop().open(new File("D:\\Regeln.doc"));
      }
    } catch (IOException ioe) {
        ioe.printStackTrace();
 
}}
  }
```
Hier die Fehlermeldungen (ohne den try Absatz läuft das Programm fehlerfrei):
Übung65FeldGui2.java:152:1: error: illegal character: '\u00a0'
    //Desktop.getDesktop().open(RegelnDame);
^
Übung65FeldGui2.java:155:1: error: illegal character: '\u00a0'
      if (Desktop.isDesktopSupported()) {
^
Übung65FeldGui2.java:155:3: error: illegal character: '\u00a0'
      if (Desktop.isDesktopSupported()) {
  ^
Übung65FeldGui2.java:155:4: error: ';' expected
      if (Desktop.isDesktopSupported()) {
   ^
Übung65FeldGui2.java:155:10: error: not a statement
      if (Desktop.isDesktopSupported()) {
         ^
Übung65FeldGui2.java:155:40: error: ';' expected
      if (Desktop.isDesktopSupported()) {
                                       ^
Übung65FeldGui2.java:156:1: error: illegal character: '\u00a0'
      Desktop.getDesktop().open(new File("D:\\RegelnDame.doc"));
^
Übung65FeldGui2.java:156:3: error: illegal character: '\u00a0'
      Desktop.getDesktop().open(new File("D:\\RegelnDame.doc"));
  ^
Übung65FeldGui2.java:156:5: error: illegal character: '\u00a0'
      Desktop.getDesktop().open(new File("D:\\RegelnDame.doc"));
    ^
Übung65FeldGui2.java:157:1: error: illegal character: '\u00a0'
      }
^
Übung65FeldGui2.java:157:3: error: illegal character: '\u00a0'
      }
  ^
Übung65FeldGui2.java:157:4: error: ';' expected
      }
   ^
Übung65FeldGui2.java:158:1: error: illegal character: '\u00a0'
    } catch (IOException ioe) {
^
Übung65FeldGui2.java:158:3: error: illegal character: '\u00a0'
    } catch (IOException ioe) {
  ^
Übung65FeldGui2.java:159:1: error: illegal character: '\u00a0'
        ioe.printStackTrace();
^
Übung65FeldGui2.java:159:3: error: illegal character: '\u00a0'
        ioe.printStackTrace();
  ^
Übung65FeldGui2.java:159:12: error: ';' expected
        ioe.printStackTrace();
           ^
Übung65FeldGui2.java:160:1: error: illegal character: '\u00a0'

^
Übung65FeldGui2.java:158:7: error: 'catch' without 'try'
    } catch (IOException ioe) {
      ^
Übung65FeldGui2.java:154:5: error: 'try' without 'catch', 'finally' or resource declarations
    try {


----------



## mrBrown (15. Mai 2017)

Und die angegebenen Zeilen sind in dem kopierten Code? Dann einfach mal abtippen, statt kopieren. Aus irgendeinem Grund sind da geschützte Leerzeichen drin


----------



## z.B. (15. Mai 2017)

Das abtippen hat geholfe, jetzt zeigt er die "echten" Fehler.
Übung65FeldGui2.java:154:11: error: cannot find symbol
      if (Desktop.isDesktopSupported()) {
          ^
  symbol:   variable Desktop
  location: class Übung65FeldGui2
Übung65FeldGui2.java:155:39: error: cannot find symbol
        Desktop.getDesktop().open(new file("D:\\RegelnDame.doc"));
                                      ^
  symbol:   class file
  location: class Übung65FeldGui2
Übung65FeldGui2.java:155:9: error: cannot find symbol
        Desktop.getDesktop().open(new file("D:\\RegelnDame.doc"));
        ^
  symbol:   variable Desktop
  location: class Übung65FeldGui2
Liegt eventuell daran das die Datei nicht auf dem Desktop sondern in einem anderen Ordner liegt?


----------



## mrBrown (15. Mai 2017)

Nein, daran dass dir der Import fehlt, `java.awt.Desktop`


----------



## z.B. (15. Mai 2017)

Danke!!!! Es funktioniert nun alles!
Aber köntest du mir noch mal kurz was zur funktionsweise erklären? Als wie und warum das funktioniert?


----------



## tommysenf (15. Mai 2017)

https://docs.oracle.com/javase/tutorial/uiswing/misc/desktop.html


----------



## Ich123456789 (16. Mai 2017)

Robat hat gesagt.:


> Was genau ist an try-catch nervig?


Das es keineFehler verträgt (von den Klammern her)


----------



## mrBrown (16. Mai 2017)

Ich123456789 hat gesagt.:


> Das es keineFehler verträgt (von den Klammern her)


Gibt es *irgendetwas*, was Syntaxfehler verträgt?


----------



## stg (16. Mai 2017)




----------



## Ich123456789 (16. Mai 2017)

mrBrown hat gesagt.:


> Gibt es *irgendetwas*, was Syntaxfehler verträgt?


Ob die klammer davor oder danach ist vertragen einige


----------



## mrBrown (16. Mai 2017)

Öhm, wo macht es denn keinen Unterschied, ob die Klammer davor oder danach steht (abgesehen von einzeiligen Blöcken bei if/while/...)?


----------



## stg (16. Mai 2017)

mrBrown hat gesagt.:


> Öhm, wo macht es denn keinen Unterschied, ob die Klammer davor oder danach steht


 Bei Klammern und anderen Klammern


----------



## z.B. (17. Mai 2017)

Danke für eure Hilfe!!!


----------



## Neumi5694 (22. Mai 2017)

Unter Windows verwende ich:

```
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler file:d:\\TestFile.doc");
```
Die Desktop-Variante muss ich auch mal prüfen, schaut ganz ordentlich aus.
Die cmd-Variante würde ich nur zum Starten von Programmen verwenden.


----------

