Mit Java externes Programm starten

R

ralli

Guest
Ich möchte mit Java ein externes GUI Programm wie gedit oder ein Konsolenprogramm wie mpg123 starten. Dabei habe ich mir bereits einen Wolf gegoogelt und keine Lösung gefunden, die wirklich funktioniert. Ich benutze NetBeans und Swing für die GUI Programmierung.

Hier mal mein Code:
Code:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
       
        Process p = Runtime.getRuntime().exec("gedit");
                       
    }

Und hier die Exceptions:

Code:
error: unreported exception IOException; must be caught or declared to be thrown
        Process p = Runtime.getRuntime().exec("gedit");

Was mache ich falsch?
 
Sogar wie man das behebt: "must be caught or declared to be thrown". Entweder try catch drum oder durchreichen nach oben.
 
Oh Entschuldigung, ich habe glatt übersehen, das es den Bereich Programmieren gibt. Ja, ich bin sicher das ich Java einsetzen möchte. Aber ich bin mir auch sicher, das ich noch eine ganze Menge lernen muß. Ich werde mich intensiver einarbeiten, Tutorials gibt es ja genug.
 
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try
{
Process p = Runtime.getRuntime().exec("gedit");
}
catch(IOExecption e)
{
//Code here
}
}
 
Danke Jeff, ich werde es mir morgen früh anschauen und mich mit den Eceptions vertraut machen und einlesen, denn ich möchte ja auch genau wissen, was passiert und ausgeführt wird. Wenn es funktioniert, melde ich mich wieder.
 
Code:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                       
      
        Process p = Runtime.getRuntime().exec("gedit");
                      
    }

Und hier die Exceptions:

Code:
error: unreported exception IOException; must be caught or declared to be thrown
        Process p = Runtime.getRuntime().exec("gedit");

Was mache ich falsch?

Das ist keine Exception was Du siehst, sondern der Compiler hat ei nen Fehler gefunden.
 
Die Methode die Du da aufrufst, wurde so erstellt, dass der Aufrufer mit einer IOException rechnen soll, falls etwas schief geht:
Code:
public Process exec(String command) throws IOException {
...
}

Wie Jeff schon geschrieben hat, musst Du diese IOException behandeln, z.B. indem Du den Aufruf in einen try-catch-Block einschließt.
Das will Dir die Fehlermeldung sagen.

Noch sehr hilfreich:
Wenn Du mit dem Cursor in einem Methoden-/Klassennamen stehst, drücke Strg+Leertaste für die Doku. Mit Strg+b siehst Du den Quellcode.
 
Gut zu wissen, das war sehr hilfreich eric81, danke dafür. Mir ist schon klar geworden, das NetBeans eine sehr mächtige Entwicklungsumgebung ist, deren Möglichkeiten ich bei langem noch nicht ausgeschöpft habe. Dann werde ich mir das mal etwas genauer anschauen.
 
Als kleiner Tipp schau dir mal das OpenBook hier an http://openbook.galileocomputing.de/javainsel9/index.htm dort findest du alles über Java was du wissen musst. Oder auch dieses http://openbook.galileo-press.de/java7/

Mir ist schon klar geworden, das NetBeans eine sehr mächtige Entwicklungsumgebung ist, deren Möglichkeiten ich bei langem noch nicht ausgeschöpft habe.
Diese großen IDEs sind wirklich sehr Fett und bieten jeden Luxus den man nur haben kann. Der Preis ist eben ein Programm das schnell mal einen GB Ram verbraucht und allgemein träge ist, wobei NetBeans doch flotter ist als Eclipse. Wenn du jetzt gerade mit der Programmierung anfängst schau auch mal über den Tellerrand und teste verschiedene IDEs wie Eclipse, NetBeans oder meinen Favoriten IntelliJ dann wirst du bestimmt die IDE finden die am besten zu dir passt. Wobei bei kleinen Projekten sogar ein einfacher Editor wie gEdit, Kwrite oder Geany ausreichen. Als Anfänger greifen die einem aber nicht so gut unter die Arme,.
 
Zwei, drei Tage sind nicht ausreichend, um mir einen wirklichen Überblick über die Leistungsfähigkeit von NetBeans zu machen. Aber es scheint ja doch eine eierlegende Wollmilchsau zu sein und vielfältige Funktionen und Werkzeuge zu besitzen wie ein Schweitzer Taschenmesser. Aber nach 4 Wochen werde ich mich endgültig für NetBeans entscheiden oder Eclipse und IntelliJ testen und ausprobieren.
 
Ach danke christian83 für die Links.:) Hätte ich fast vergessen, aber so viel Zeit muß sein.
 
Noch ein kleiner Nachtrag, bei NetBeans musst du mal schauen wie es mit der Zukunft aussieht. Oracle hat wenig Interesse an NetBeans da sie selbst aktiv bei Eclipse mitwirken und die Roadmap von NetBeans ist auch schon lange Zeit leer. Da ist die Zukunft also sehr ungewiss. Was natürlich nicht bedeutet das NetBeans dadurch unbrauchbar ist/wird es steht immer noch eine recht große Community dahinter. Aber trotzdem sieht es da meiner Meinung nach nicht nach einer rosigen Zukunft aus.
 
Ja, diese Aussage verunsichert mich ein wenig, aber was ist in der heutigen schnellebigen Zeit schon nachhaltig? Und scheinbar wird NetBeans aber noch weiterentwickelt, denn es gibt ja mittlerweile die Version 8. Ich möchte schon etwas tiefer eintauchen, denn mich interessiert die Datenbankprogrammierung und die damit verbundene Anbindung mit den entsprechenden JDBC Treibern schon sehr. Ansonsten brauche ich sicher keine 4 Wochen, denn ich bin ja durch frühere IDE'S (Delphi, Lazarus, NET und QT) schon an die Strukturen und Logik einer modernen IDE gewöhnt, deshalb ist mir auch NetBeans gleich vertraut vorgekommen. Natürlich kenne ich auch Fehlerbehandlungsroutinen, denn die gibt es in jeder Hochsprache. Nur ist leider die Syntax etwas unterschiedlich, aber das dürfte ja keine Hürde sein.
 
So hier ein kleines Feedback. Natürlich habe ich es hinbekommen, es war ja wirklich einfach:
Code:
try
          
        { // externes Programm starten
                          
               Process p = Runtime.getRuntime().exec("gedit");
      
        }
      
        catch (Exception e)
          
        {e.printStackTrace();}
      
      
    }

Im übrigen macht mir die Arbeit mit Netbeans richtig Freude. Auch für die Datenbankprogrammierung genau das Richtige. Da bin ich mitten drin, jetzt schaue ich mir gerade an, wie ich JTable mit Daten aus einer sqlite Datenbank oder Derby füllen kann. Datenbankanbindung und das Absetzen eines SQL Statements funktioniert schon einwandfrei. Und das mit den Exceptions ist ja auch nichts grundlegendes Neues, das gibt es ja in anderen Hochsprachen auch. Also ich denke schon, das ich mit NetBeans die richtige Wahl getroffen habe und auch dabei bleibe.
 
Natürlich sollte es IOException heißen, ich kann es leider nicht mehr berichtigen. Exception funktioniert auch, ist aber obsolet.
 
Wenn Du nicht nur gedit startet willst, sondern mehr mit externen Prozessen anstellen möchtest (Parameter, Ein-/Ausgabekanal, ...), dann schau Dir mal den java.lang.ProcessBuilder an.
 
Danke für den Hinweis eric81, natürlich will ich auch mehr mit externen Prozessen arbeiten. Kommt für morgen früh direkt auf die Tagesagenda.
 
ProcessBuilder ist abgehakt. Java gefällt mir immer besser. Ich hatte mich ja schon vor einigen Monaten damit beschäftigt. Jetzt aber bin ich tief eingetaucht. Vergleiche hinken ja oft, aber Java gefällt mir besser als das Qt Framework. Dann werde ich mich mal alsbald an die erste größere Anwendung wagen. Für kleinere Sachen nehme ich JEdit, für die GUI und Datenbankprogrammierung bleibe ich bei NetBeans, das steht jetzt schon fest.
 
Java hat schon einige Vorteile gegenüber anderen Sprachen aber genau so viele Nachteile, wobei ein Nachteil für den einen ein Vorteil für einen anderen ist ;)

Wenn dir Java gefällt dann nutze es, bei der Wahl der Editoren sei einfach flexibel. Für einfache Dinge eignet sich ein normaler Texteditor oft auch ;)
 
Meinen ersten Kontakt mit einer IDE und der sogenannten RAD Entwicklung hatte ich 1997 mit Delphi 3 Professional. Das Original habe ich noch heute. Die logische und übersichtliche Struktur der IDE war damals bereits wegweisend und hat nicht unwesentlich zum Erfolg von Borland's Delphi beigetragen. Der Chefentwickler ging einige Jahre später zu Microsoft, wo er dort an der IDE für.NET maßgeblich beteiligt war. Seit dem hat sich von den logischen Strukturen einer zeitgemäßen IDE nichts geändert (unter der Haube schon), deshalb fühle ich mich auch gleich bei NetBeans zu Hause und muß nicht mühsam umlernen. Delphi blieb ich bis Delphi 2005 treu, dann löste Lazarus für Linux diese erfolgreiche Reihe ab. Zwischendurch erwarb ich 2001 noch Kylix, das dann aber floppte. QT hatte ja anfangs keine IDE sondern lediglich den Designer. Erst später kam dann der QT Creator hinzu, was die Entwicklung größerer Projekte wesentlich vereinfachte. Auch mit seinen Datenbankkomponenten war Delphi dem Wettbewerb um Jahre vorraus. JDBC Treiber unter NetBeans sind wirklich gut. Schnell eingebunden verrichten sie zuverlässig ihre Dienste als Service. Dabei sind die Treiber für Mysql und PostgreSQL schon standardmäßig an Bord. Und für standalone Datenbanken gibt es Apache Derby, die für kleinere Anwendungen des Desktop auch ausreichend sind. Super wäre es, wenn die Tabelle einer Datenbank auf ein JFrame gezogen werden könnte und die dafür erforderliche Verbindung direkt eingebunden würde. Das funktionierte bereits unter Delphi 3 Professional 1997.
 
Zurück
Oben