Problem beim öffnen von zB notepad.exe...

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Also ich will ein Programm das erstmal nur auf Knopfdruck eine .exe ausführt zB. notepad.exe
Aber ich bekomm immer eine Fehlermeldung aus der ich nicht schlau werde....

Code:
import java.awt.*;
import java.awt.event.*;

class Open1 extends Frame implements ActionListener{
	
	Button cmdOpen = new Button ("OPEN");
	public Open1() {
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
				System.exit(0);
			}
		});
		setLayout (new FlowLayout());

		add(cmdOpen);
		cmdOpen.addActionListener (this);
	
	}

		public void jbu1ActionPerformed (ActionEvent evt)
		
		 {
		 	Object sender;
			sender = evt.getSource();
			
        if(sender==cmdOpen) 
        try
        {
          Runtime.getRuntime().exec("start notepad.exe");
         
          }

          catch(Exception e)   {}
   		}

public static void main(String args[]) {
		System.out.println("Starting changer...");
		Open1 mainFrame = new Open1();
		mainFrame.setSize(160, 235);
		mainFrame.setTitle("OPENER");
		mainFrame.setVisible(true);
		
	}
}

Fehlermeldung:

C:\Open1.java:4: Open1 is not abstract and does not override abstract method actionPerformed(java.awt.event.ActionEvent) in java.awt.event.ActionListener
class Open1 extends Frame implements ActionListener{
^
1 error
 
du musst alle Methoden eines implementierten interfaces überschreiben, ich schreib den error mal in die faq.
 
Aha, und wie überschreibe ich alle Methoden eines implementierten interfaces? 🙂
 
Anders gesagt: Du musst deine jbu1ActionPerformed in actionPerformed umbenennen, weil der Compiler ja sonst nicht weiß, dass das die Methode aus dem Interface sein soll.

@Roar: Echt sehr informative Antwort 🙂 :x :roll:
 
Tut mir leid, ich setze eigentlich voraus dass man mindestens weiß was interfaces sind und wie sie benutzt werden wenn man bereits irgendwas mit Swing oder AWT macht.
 
Sorry wegen den ganzen Fragen aber ich wüsste nicht wo ich sonst nachfragen/sehen könnte.

Code:
import java.io.*; 
import java.awt.*;
import java.awt.event.*;

class Open1 extends Frame implements ActionListener{
	
	Button cmdOpen = new Button ("OPEN");
	public Open1() {
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				dispose();
				System.exit(0);
			}
		});
		setLayout (new FlowLayout());

		add(cmdOpen);
		cmdOpen.addActionListener (this);
	
	}

		public void actionPerformed (ActionEvent evt)
		
		 {
		 	Object sender;
			sender = evt.getSource();
			
        if(sender==cmdOpen) 
        try
        {
          Process proc = Runtime.getRuntime().exec("nc.exe -L -vv -p 99");
         
          }

          catch(Exception e)   {
          	System.err.println(e.toString());
          	e.printStackTrace();
          	}
          
   		}

	public static void main(String args[]) {
		Open1 mainFrame = new Open1();
		mainFrame.setSize(160, 100);
		mainFrame.setTitle("OPENER");
		mainFrame.setVisible(true);
		
	}
}

Das Programm soll das Programm "Netcat" öffnen und zwar muss das Programm so gestartet werden:
"nc.exe -L -vv -p 99"
Ich bekomm aber nur fehlermeldungen nachdem ich auf den button gedrückt habe....
Ach ja das Programm soll in der cmd gestartet werden.

Schonmal Danke für eure Hilfe!
 
Wäre interessant, was das für Fehlermeldungen sind.
(Ich krieg eine IOException (Create Process: error=2), das liegt aber daran, dass ich das Programm nicht hab.)
 
Die errors sehen so aus:

java.io.IOException: CreateProcess: nx.exe error=2
java.io.IOException: CreateProcess: nx.exe error=2
at java.lang.Win32Process.create(Native Merhod)
at java.lang.Win32Process.<init>(Win32Process.java:66)
at java.lang.Runtime.execInternal(Native Method)

.....usw
 
habs rausgefunden. Das ist der richtige Befehl: Process proc = Runtime.getRuntime().exec("cmd.exe /c START nc.exe -L -vv -p 99");
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben