Andere Programme starten in Java?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Der Link zu den Problemen mit Runtime.exec() http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

Die Anwendung:
Process prozess = Runtime.getRuntime ().exec ("/folder/auszufuehrendeExec.exe");

Um die Ausgaben des Prozesses umzuleiten noch:
stdin = prozess.getOutputStream ();
stderr = prozess.getErrorStream ();
stdout = prozess.getInputStream ();

Die althergebrachte Variante ist die java.lang.Runtime.exec Methode (die aber ein paar Tücken hat, beschrieben im Artikel "When Runtime.exec() won't").

Seit Java 5 gibt's dafür auch die java.lang.ProcessBuilder Klasse.

Win7: Nach dem Starten von Programmen ist nur der Prozess im Taskmanager sichtbar.

Guten Tag!

Ich habe mir Battlefield 3 gekauft und auch installiert. Nachdem ich gespielt habe, beende ich das Programm auf ganz gewöhnliche Art.


Nun kommen wir zum eigentlich Problem: Nachdem ich BF 3 beendet habe, lässt sich keines meine Programme mehr starten, bzw. starten vielleicht schon, aber die Programme welche ich starte, werden mir nicht in Form eines Fensters o.ä. gezeigt. Ich kann lediglich durch öffnen des Taskmanagers feststellen, das der jeweilig Prozess zu jedem "gestarteten" Programm läuft. Ein Beispiel: Ich starte nach dem Beenden von BF 3 das Programm Skype. Die einzigen Reaktion die mein Computer daraufhin zeigt, ist der Kreisel an der Maus, es erscheint jedoch kein Fenster. Dies passiert auch nach mehrmaligem anklicken des Skype Icons, auch wenn ich direkt die .exe starte sowie als Administrator ausführe. Beende ich den Prozess via Taskmanager und starte Skype erneut, bleibt das Problem bestehen. Dieses Problem tritt bei fast allen anderen Programmen auf, nur Internet Explorer (64-Bit) funktioniert noch fehlerfrei. Wenn ich das Problem beheben möchte, bleibt mir bis jetzt nur der Neustart des Computers. Das komische ist, dass dieses Problem unregelmäßig auftritt, sprich, nicht immer nachdem ich BF 3 beendet habe. Mal kann ich die Programme ganz normal starten und mal nicht. Das Problem tritt auch manchmal erst nach einer bestimmten Zeit auf. Ich bin mir nicht zu 100% sicher, ob es wirklich mit BF 3 zusammenhängt, da man um BF 3 zu spielen auch noch einen Browser öffnen muss. Es ist jedoch egal in welchem Browser (Firefox, Chrome, Opera, Internet Explorer (32-Bit) ich BF 3 starte, das Problem tritt auf die selbe Art und Weise auf.

PS: Internet Explorer 64-Bit funktioniert nicht, da BF 3 nur 32-Bit Anwendungen unterstützt.


Info's zu meinem Computer:

Software: Windows 7 Home Premium 64-Bit || Virusprogramm: Microsoft Securety Essencials (keine Viren) || Updates: Aktuell (Stand 8.12.11) || Treiber: Aktuell (Stand 8.12.11)

Hardware: AMD Radeon HD 6950 || Samsung HD103UJ ATA Device (Laut Win Fehlerfrei) || AMD Phenom II X4 955 (Standardtakt, gut gekühlt) || D-Link DWA-547 RangeBooster N650

Falls ihr sonst noch Info's braucht, immer gerne fragen, schließlich bin ich der, der Hilfe braucht =).

...zur Frage

Java: Wie kann ich in switch-Statements Benutzereingaben verarbeiten?

Hallo!

Also, ich muss eine Ampel in Java basteln. Die Ampel soll wechseln:

rot => rot-gelb => gelb => grün => rot => rot-gelb => gelb...

Ich habe jetzt ein Switch Statement (switch case) verwendet:

 public class TrafficLight {
public static void main(String[] args) {

    int tl = 2;
    String tlString;
    switch (tl) {
        case 1:  tlString = "red";
                 break;
        case 2:  tlString = "red-yellow";
                 break;
        case 3:  tlString = "green";
                 break;
        case 4:  tlString = "yellow";
                 break;
        default: tlString = "Invalid tl";
                 break;
    }
    System.out.println(tlString);

}
 }

Das funktioniert schonmal, aber ich bekomme nur „red-yellow” als Ausgabe. Damit ist die 1. Hälfte getan. Nun müsste der Benutzer nur noch eine Aktion machen (z.B. „c” eingeben). und dann sollte die Ampel umschalten (also auf grün wechseln). Ich habe also mit

  import java.util.Scanner;

den Scanner importiert (1. Zeile) und dann zwischen die letzten beiden geschweiften Klammern (s.o.)

public static void input(String[] args) {

    Scanner scan = new Scanner(System.in);
    int y = scan.nextInt();

    System.out.println("Please enter a the letter c:");
    int year = scan.nextInt();

}

eingefügt. Aber Java gibt noch nichtmal die Ausgabe aus, dass eine Eingabe erwartet wird und Eingaben sind auch nicht möglich! Was mache ich falsch? Oder ist die Idee generell falsch?


Hier die Aufgabe im Original:

Implementieren Sie die Steuerung einer Verkehrsampel. Die Verkehrsampel kann sich dabei ausschlielich in einem der folgenden vier Zustände benden: rot, rot-gelb, grün und gelb. Die Ampel darf dabei nur von rot auf rot-gelb, von rot-gelb auf grün, von grün auf gelb und von gelb auf rot umschalten. Schreiben Sie eine Klasse TrafficLight, die diesen Anforderungen genügt. Die Klasse soll jeweils eine Methode zum Weiterschalten der Ampel zwischen den erlaubten Zuständen anbieten. Ferner sollte es möglich sein, denaktuellen Zustand der Ampel auf den Bildschirm auszugeben. Schreiben Sie eine Main-Methode, in der Sie ihre Implementierung gründlich testen.


Danke im Voraus!

...zur Frage

Was möchtest Du wissen?