# Methode um eine HTML-Datei zu öffnen



## javaKueken (22. Nov 2012)

Könnt ihr mir sagen, warum die folgende Methode die html-Datei durch Angabe des relativen Pfades nicht im Standardbrowser öffnet? Wenn ich stattdessen den absoluten Pfand angebe, dann funktioniert es. Ich muss aber unbedingt den relativen Pfad nutzen.

```
public void htmlOeffnen()
	{
		Desktop desktop = Desktop.getDesktop();

		// Adresse mit Standardbrowser anzeigen
		URI uri;
		try
		{
			uri = new URI("classpath:hilfe/index.html");
			desktop.browse(uri);
		} catch (Exception oError)
		{
			// Hier Fehler abfangen
			System.out.println("Seite kann nicht geöffnet werden.");
		}
	}
```

Könnt ihr mir weiterhelfen?


----------



## TKausL (22. Nov 2012)

Weil dein Browser damit 





> "classpath:hilfe/index.html"


 nichts anfangen kann. Es gibt genügend Themen hier, die erklären wie man den aktuellen Pfad bekommt, danach solltest du mal suchen.


----------



## Volvagia (22. Nov 2012)

Ist einfach genial zu wissen, warum und wo etwas nicht funktioniert. *_*


```
public static void main(String[] args) {
	Desktop desktop = Desktop.getDesktop();
	
	// Adresse mit Standardbrowser anzeigen
	URI uri;
	try
	{
		uri = new URI("hilfe/index.html");
		desktop.browse(uri);
	} catch (Exception oError) {
		oError.printStackTrace();
	}
}
```

Allerdings öffnet das bei mir mit IE und nicht dem Standartbrowser.


----------



## javaKueken (22. Nov 2012)

Volvagia hat gesagt.:


> Ist einfach genial zu wissen, warum und wo etwas nicht funktioniert. *_*
> 
> 
> ```
> ...



Das funktioniert leider auch nicht. Aber mir ist jetzt schon ein Licht aufgegangen. Ich habe das Offensichtliche nicht bedacht. Es muss vom Browser gelesen werden können, deshalb funktioniert ein absoluter Pfad. 
Hmmm... mal schauen wie das lösen werde.


----------



## Volvagia (22. Nov 2012)

Bei mir funktioniert es. Möglicherweiße hat dein Browser/VM damit ein Problem, aber schau mal was 
	
	
	
	





```
System.out.println(new File("hilfe/index.html").exists());
```
ausgibt.


----------



## javaKueken (22. Nov 2012)

Volvagia hat gesagt.:


> Bei mir funktioniert es. Möglicherweiße hat dein Browser/VM damit ein Problem, aber schau mal was
> 
> 
> 
> ...



true wird ausgegeben


----------



## Volvagia (22. Nov 2012)

Entschuldige, dann scheinst das zu stimmen. Hab hier nur ein Windows-System, aber mit Firefox funktioniert es bei mir auch relativ per Arg.


```
> D:
> "D:/Mozilla Firefox/firefox.exe" index.html
```

oder anderst herum


```
> cd D:/Mozilla Firefox/
> firefox "../index.html"
```

Die html liegt in D: und enthält nur einen Test-String.
Sehr seltsam. :bahnhof:


----------



## javaKueken (22. Nov 2012)

Danke an alle !!!
Ich habe es jetzt so gelöst und es funktioniert auch aus jar-Datei heraus. Hier mein Code:

```
public void htmlOeffnen()
	{
		
		String location = new File("hilfe/index.html").toURI().toString();
		
		Desktop desktop = Desktop.getDesktop();

		// Adresse mit Standardbrowser anzeigen
		URI uri;
		try
		{
			uri = new URI(location);
			desktop.browse(uri);
		} catch (Exception oError)
		{
			// Hier Fehler abfangen
			System.out.println("Seite kann nicht geöffnet werden.");
		}
	}
```


----------



## nillehammer (22. Nov 2012)

```
String location = new File("hilfe/index.html").toURI().toString();
```
Hier erzeugst Du den String über den Umweg toUri

```
uri = new URI(location);
```
Hier machst Du aus dem String (der zwischendurch eine uri war) wieder eine URI. Ist das sinnvoll?


----------



## javaKueken (22. Nov 2012)

nillehammer hat gesagt.:


> ```
> String location = new File("hilfe/index.html").toURI().toString();
> ```
> Hier erzeugst Du den String über den Umweg toUri
> ...


Ich brauche einen String und kenne keinen anderen Weg. Wie würdest du es denn machen? Ich weiß nur, dass es so funktioniert. Und das ist doch was zählt. Solltest du eine bessere Lösung haben, würde ich mich über ein Kommentar freuen.


----------



## nillehammer (22. Nov 2012)

Japp, 
	
	
	
	





```
String location...
```
 ganz streichen und dann nur das hier:

```
URI uri = new File("hilfe/index.html").toURI();
```
Das war's, was ich mit _Umweg_ meinte. Du brauchst den String nicht;


----------

