Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich möchte auf durch den Druck auf einen Button eine Text-Datei in einem Editor (z.b. Notepad, oder denjenigen der zum Bearbeiten von Textdateien standardmäßig vorgesehen ist) öffnen lassen. Mit diesem dann die geöffnete Datei bearbeiten, speichern, etc.
Wie man ein externes Programm aufruft das hab ich also schon rausgefunden
Code:
Runtime.getRuntime().exec(" xyz.exe ");
Jetzt sei mir aber nur die zu öffnende Textdatei bekannt und nicht das Programm welches ich per .exe angeben könnte, da mein Programm auch auf anderen Rechnern laufen soll.
Wunderbar, das funktioniert...
Aber damit macht man das ganze doch auf Windows fixiert oder? Denn es soll ja auch, laut Spezifikation unter Linux funktionieren.. Gibts da einen ähnlichen Kniff?
nein, unter linux kannst du überhaupt keine "Dateien" ausführen. Da müsstest du das entsprechende Programm (pfad) mitsamt parameter aufrufen und hoffen, dass diese auch von dem Prog interpretiert werden.
Okay danke, da haben wir ja schon die Lösung des Problems .. So wird das also nicht eingebaut werden können
Oder kann man vor Aufruf dieser Programmzeilen auf Windows-/Linux-Umgebung testen? ???:L
Unter Windoof darf im Prinzip jeder alles, daher auch die Anfälligkeit für Viren, Trojaner, etc.
Unter Linux/Unix/Derivative , darf nur der Benutzer 'root' alles.
Der/die Benutzer (User) dürfen fast alles in Ihrem 'HOME-Verzeichnis' machen, aber auch da gibt es mitunter Einschränkungen.
Da speziell unter Linux/Unix/Derivative die Systeme nie gleich aufgebaut sind; außer man/frau verwendet FHS (File Hirachie Standard); ist es auch nicht so leicht diverse Programme einzuschleusen, außer ein(e) Depp(in) arbeitet ständig unter dem User 'root'.
Wenn man/frau also Plattform unabhängige Programme entwickelt; wofür sich JAVA unter anderem ja am besten eignet; tut man gut daran, externe Programme mit genauer Pfadangabe über Properties einzubinden.
Dies hatte Windows früher ja auch per *.INI Dateien gemacht.
Also ich bin selber Linux - Fan und Java Entwickler. Aber die Argumentation von DocRadom das es gut ist, dass jedes System bei Linux anders aussieht kann ich überhaupt nicht teilen. Wenn es die Linuxgemeinde endlich schaffen würde einen einheitlichen "Unterbau" zu schaffen, würden bestimmt auch Firmen endlich bessere Unterstützung für Linux bieten. Momentan muss man (wenn man es anwenderfreundlich machen möchte) für etliche Distributionen Installationspakete erstellen. Meiner Meinung nach würden folgende "kleinen" (ok, ok ich weiß, dass wird nicht gelingen) Änderungen Linux zum Durchbruch verhelfen:
1. Einheitliche Paketsystem
2. Einheitlicher "Unterbau"
3. Schnittstelle für propritäre Treiber
Um mal kurz zum eigentlichen Thema zurückzukommen
Seit Java 6 gibt es folgende Möglichkeit:
Über die Klasse java.awt.Desktop können StandardProgramme geöffnet werden. bspw folgende Methoden:
- browse() öffnet Browser
- open() lädt eine Datei mit der für Ihr registrierten Typ
- print() Druck mit der entsprechenden Anwendung
PS.: und das was "Hobbit_Im_Blutrausch" schreibt ist falsch.
Man kann sehr wohl unter Linux Dateien mit Programmen verknüpfen wie in Windows.
In Windows steht das zeug in der Registry aber auch hier BENÖTIGST du den PFAD zum Programm!!!!!!!!!
Unter Linux steht das halt nicht inder Registry sondern in der PATH Variablen...
Wenn man also unter Linux eine Datei namens "text.txt" aufruft, funktioniert das selbstverständlich.
Ein unterschied ist, dass Linux die Datei auch ohne Endung, also nur "text" korrekt öffnen würde, da es nicht nach der Dateiändung zuordnet, sonder nach Dateiinhalt.
juhuu so gehts danke .. jez hab ich nur noch 1 prob.. wie kann ich den Pfad erfragen, von wo aus das Programm gestartet wurde? Ich will dann später die txt files mit ins .jar file packen.. aber das hat ja dann jeder wo anders liegen ^^
also.. ich hab mein programm aus eclipse raus exportiert (als .jar file).. dann hab ich die datei (Datei.rar) direkt ins .jar file gepackt (also keine unterordner).. wenn ich aber nun auf den Button drauf klicke, dann passiert nichts, außer das der button solange "gedrückt" erscheint, bis ich mit dem courser von dem button runter gehe...
Warum willst du denn die Textdatei unbedingt in dem Editor öffnen? Solang es sich nur um eine pure Textdatei handelt, kannst du sie ja auch in einem extra Fenster in einem JTextArea öffnen. Das wäre dann auch Plattformunabhängig ...
File f = new File(getClass().getResource("Datei.rar").toURI());
Desktop.getDesktop().open(f);
in eclipse funzt das auch (Die Datei "Datei.rar" ist im bin ordner).. da wird die datei geöffnet, aber wenn ich das ganze dann als jar exportiere und die Datei.rar mit da rein packe (nachträglich) dann bekomm ich folgende meldung:
ich hab noch mal gegoogelt und binn auf folgendes gestoßen:
Why are you trying to create a File object from your resource? Are you not aware that if your app lives in a Jar, for example, you can't use the File API on it (because it isn't a 'file' at that point). Are you wanting to open that resource?
Use getClass().getResourceAsStream(pathjasper) - assuming pathjasper is correct in the first place, that is.
Was machst du da eigentlich? Bzw. was willst du machen? Könnte mir vorstellen, dass du da viel zu komplex denkst. Warum willst du die Datei unbedingt "starten"? Warum muss die Datei unbedingt in einem Jar liegen? Du weißt, dass das Plattformabhängig ist?
also.. ich habe vor mir so eine art "starterprogramm" zu schreiben, wo dann ein paar kleinere Programme drinne sind, die man dann einfach per klick starten kann oder halt auch rar dateien, txt, etc. .. der hauptgrund warum ich das mache ist, damit ich was lerne.