it-swarm.com.de

Aufrufen der Java-Hauptmethode mit Parametern von Eclipse

Während der Entwicklung (und zum Debuggen) ist es sehr nützlich, eine ' public static void main (String [] argv) - Methode der Java-Klasse direkt in Eclipse auszuführen (mithilfe des Kontextmenüs Ausführen als).

Gibt es eine ähnlich schnelle Methode zum Angeben von Befehlszeilenparametern für den Lauf? Was ich jetzt mache, ist das "Ausführen" -Dialogfeld. Klicken Sie durch die verschiedenen Einstellungen auf die Registerkarte, auf der ich VM und das Programm angeben kann Argumente und geben Sie sie dort ein. Zu viele Schritte, und ich möchte nicht die dauerhafteren Laufzeitkonfigurationseinstellungen mit den einmaligen Aufrufparametern mischen. Was ich stattdessen möchte, ist ein Kontrollkästchen (oder einen separaten Menüpunkt "Ausführen") als Java-Anwendung mit Kommandozeile ") und dann jedes Mal zur Eingabe der Kommandozeile aufgefordert werden (mit einer Nizza-Historie).

31
Thilo

Diese Antwort basiert auf Eclipse 3.4, sollte jedoch in älteren Versionen von Eclipse funktionieren.

Wenn Sie Ausführen als ... auswählen, gehen Sie zu den Ausführungskonfigurationen.

Konfigurieren Sie auf der Registerkarte "Argumente" Ihrer Java-Laufkonfiguration die Variable $ {string_Prompt} so, dass sie angezeigt wird (Sie können auf Variablen klicken, um sie zu erhalten, oder sie kopieren, um sie direkt festzulegen).

Jedes Mal, wenn Sie diese Laufkonfiguration verwenden (nennen Sie sie gut, damit Sie sie später haben), werden Sie zur Eingabe der Befehlszeilenargumente aufgefordert.

50
MetroidFan2002

Uri ist falsch, es gibt eine Möglichkeit, Parameter direkt zur Hauptmethode in Eclipse hinzuzufügen. Die Parameter sind jedoch nicht sehr flexibel (einige dynamische Parameter sind zulässig). Folgendes müssen Sie tun:

  1. Führen Sie Ihre Klasse einmal so aus, wie sie ist.
  2. Gehe zu Run -> Run configurations...
  3. Wählen Sie aus der Liste auf der linken Seite Ihre Klasse aus der Liste unter Java Application aus, oder geben Sie ihren Namen in das Filterfeld ein.
  4. Wählen Sie die Registerkarte Argumente und schreiben Sie Ihre Argumente in das Feld Program arguments. Nur für den Fall, dass es nicht klar ist, dass sie durch Leerzeichen getrennt sind, würde "a b c" (ohne Anführungszeichen) bedeuten, dass Sie die Argumente a, b und c an Ihr Programm übergeben.
  5. Führen Sie Ihre Klasse erneut wie in Schritt 1 aus.

Ich empfehle jedoch die Verwendung der JUnit/wrapper-Klasse, genau wie Uri es gesagt hat, da Sie auf diese Weise die tatsächlichen Parameter viel besser kontrollieren können als dies.

15
Esko

AFAIK gibt es dafür keinen eingebauten Mechanismus in Eclipse.

Am ehesten können Sie einen Wrapper erstellen, der Sie zur Eingabe dieser Werte auffordert und den (fest codierten) main aufruft. Sie erhalten dann den Ausführungsverlauf, solange Sie keine abgeschlossenen Prozesse löschen. Hierfür gibt es zwei Varianten: Verwenden Sie JUNit oder Injection oder Parameter, damit Ihr Wrapper immer die richtige Klasse für seine Hauptklasse verwendet.

2
Uri

Ich bin nicht sicher, was Sie verwenden, aber ich finde es praktisch, dass ich normalerweise nicht mehr als mehrere Befehlszeilenparameter verwende. Daher erhält jedes dieser Szenarien eine Laufkonfiguration, und ich wähle nur diejenige aus, die ich aus dem Laufverlauf ziehen möchte.

Die Funktion, die Sie vorschlagen, scheint ein wenig übertrieben zu sein, IMO.

1
Yuval Adam

Wenn Leerzeichen in Ihrem String-Argument enthalten sind, führen Sie folgende Schritte aus:

Ausführen> Konfigurationen ausführen> Java-Anwendung> Argumente> Programmargumente

  1. Fügen Sie Ihr String-Argument in Anführungszeichen ein
  2. Trennen Sie jedes Argument durch Leerzeichen oder neue Zeilen

Eine andere Idee:

Platzieren Sie alle Ihre Parameter in einer Eigenschaftendatei (ein Parameter = eine Eigenschaft in dieser Datei). Laden Sie dann in Ihrer Hauptmethode diese Datei (mit Properties.load(*fileInputStream*)) . Wenn Sie also ein Argument ändern möchten, müssen Sie dies nur tun Bearbeiten Sie Ihre Datei args.properties und starten Sie Ihre Anwendung ohne weitere Schritte.

Natürlich ist dies nur für Entwicklungszwecke gedacht, kann aber sehr hilfreich sein, wenn Sie Ihre Argumente häufig ändern müssen ...

0
Romain Linsolas