# Probleme mit Processbuilder



## Daelrik (29. September 2006)

Hallo,

ich will mittels ProcessBuilder Klasse div. Dateien mit dem entsprechenden Programm aufrufen lassen, dh. entweder mit Visio oder Excel. Dazu benutze ich folgenden simplen Code:


```
ProcessBuilder builder = new ProcessBuilder("excel", "test.xls");
Process p = builder.start();
```

würde ich "excel" zb auf notepad od ultraedit ändern und stattdessen ein test.txt öffnen wollen klappt alles, aber bei office-programmen (visio, winword, excel) verweigert er mir den Dienst bzw. schickt mir einen error=2.
Ehrlich gesagt hab ich keinen Plan wieso es nicht geht, ich will aber auch keine fixen Pfadangaben machen müssen zu den jeweiligen Programmen, dh. die Lösung muss irgendwie in diese Richtung gehen, nämlich dass er einfach Excel oder Visio öffnet, je nachdem was ich ihm halt sage.

Wäre da über Hilfe echt dankbar.


----------



## flashray (29. September 2006)

Hallo Daelrik,

der Texteditor in Windows heißt Editor, du rufst ihn aber mit Notepad auf, weil das sein interner Name ist. Ebenso kann man bspw. den Internet Explorer mit iexplore aufrufen. Oder den Windows Media Player mit wmplayer. Schau mal in deinem Programmordner wie der genaue Name von der Wordanwendung lautet. Alternativ kannst du auch in der Verknüpfung zu Word im Startmenü oder dem Desktop nachschauen (Im Feld Ziel). 

Das wäre eine mögliche Fehlerquelle die mir einfällt. Alle Angaben ohne Gewähr!


Vg Erdal


----------



## flashray (29. September 2006)

Hallo Daelrik,

konnte mit absoluten Pfaden eine Datei mit OpenOffice Writer öffnen. Allein der Programmname hat jedoch nicht funktioniert.


```
import java.io.IOException;

public class Test {

	public static void main(String[] args) throws IOException {
		ProcessBuilder builder = new ProcessBuilder(
				"C:\\Programme\\OpenOffice.org 2.0\\program\\swriter\\",
				"C:\\test.odt");
		Process p = builder.start();
	}
}
```


Vg Erdal


----------



## javaprogger1987 (30. September 2006)

Das man das nur mit dem Programmnamen aufrufen will, kann ja auch nicht klappen 
Windows muss ja wissen wo das Programm sich befindet. Notepad z.B. liegt im Windows-Ordner, der automatisch in der Path/Classpath-Variable drinsteht (in der Windows nach Programmen sucht). Ultraedit hat sich wahrscheinlich auch in diese Variable eingetragen, weshalb das auch funktioniert..
Was du machen könntest (wenn du möchtest, dass die Standartapplikation geöffnet wird - z.B. Excel für .xls) kannst du das verwenden:
	
	
	



```
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + "test.xls");
```

Gruß


----------



## Daelrik (30. September 2006)

Classpath, aha aha.. naja dachte es ginge mit excel auch ganz normal weil mans zb unter "Ausführen.." auch simpel mit "excel" aufrufen kann, genau wie den editor mit "notepad" oder halt den ultraedit mit "ue32" .. egal, das hilft jetzt schon ein kleines bisschen mit dem Runtimebeispiel. Also schonmal dickes Danke dafür 

Mir stellt sich aber jetzt noch eine Frage: ich arbeite teils bei Excel auch mit XML files, da xml aber standardmässig nicht excel zugeordnet ist als Standardprogramm (was ja ganz gut so is) steh ich jetzt aber natürlich wieder vor dem Problem, dass ich diese xml files nicht per knopfdruck mit excel öffnen kann. Wär es etvl sinnvoll bzw überhaupt möglich den Standort der excel.exe auf dem PC zu suchen und dann vom programm den pfad zu nehmen?


----------

