2008-12-17 11 views
31

Während der Entwicklung (und zum Debuggen) ist es sehr nützlich, eine Java-Klasse 'public static void main (String [] argv) Methode direkt aus Eclipse (mit dem Ausführen als Kontextmenü).Aufruf der Java-Hauptmethode mit Parametern aus Eclipse

Gibt es eine ähnlich schnelle Möglichkeit, Befehlszeilenparameter für den Lauf anzugeben? Ich gehe jetzt zum "Run Dialog", klicke durch die verschiedenen Einstellungen auf die Registerkarte, wo ich VM- und Programmargumente angeben und sie dort eingeben kann. Zu viele Schritte, und ich möchte die dauerhafteren Laufzeitkonfigurationseinstellungen nicht mit den einmaligen Aufrufparametern mischen. Was ich stattdessen möchte, ist eine Box irgendwo zu überprüfen (oder einen separaten Menüpunkt "Als Java-Anwendung mit Kommandozeile ausführen") und dann jedes Mal zur Eingabe der Befehlszeile aufgefordert werden (mit einer schönen Geschichte).

+1

Wie Uri sagt, ich denke nicht, dass das möglich ist, aber es wäre wirklich cool. Ich mag es auch nicht, den Laufdialog zu füllen. –

Antwort

49

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

Wenn Sie Ausführen als ... wählen, gehen Sie in die Laufkonfigurationen.

Konfigurieren Sie auf der Registerkarte "Argumente" Ihrer Java-Ausführungskonfiguration die Variable $ {string_prompt}, die angezeigt werden soll (Sie können auf Variablen klicken, um sie zu erhalten oder kopieren, um sie direkt festzulegen).

Jedes Mal, wenn Sie diese Laufkonfiguration verwenden (nennen Sie sie gut, damit Sie sie später haben), werden Sie nach den Befehlszeilenargumenten gefragt.

2

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

Die nächste Möglichkeit besteht darin, einen Wrapper zu erstellen, der Sie nach diesen Werten fragt und das (hardcoded) main aufruft. Sie erhalten dann den Ausführungsprotokoll, solange Sie die beendeten Prozesse nicht löschen. Zwei Varianten davon sind entweder die Verwendung von JUNit oder die Verwendung von injection oder parameter, sodass Ihr Wrapper immer eine Verbindung zur richtigen Klasse für seine Hauptkomponente herstellt.

1

Ich bin nicht sicher, was Ihre Anwendungen sind, aber ich finde es bequem, dass ich normalerweise nicht mehr als mehrere Befehlszeilenparameter verwenden, so dass jedes dieser Szenarien eine Laufkonfiguration erhält, und ich wähle nur die, die ich will die Laufgeschichte.

Die Funktion, die Sie vorschlagen, scheint ein bisschen ein Overkill, IMO.

14

Uri ist falsch, es gibt eine Möglichkeit, der Hauptmethode in Eclipse direkt Parameter hinzuzufügen, die Parameter sind jedoch nicht sehr flexibel (einige dynamische Parameter sind erlaubt). Hier ist, was Sie tun müssen:

  1. Führen Sie Ihre Klasse einmal wie es ist.
  2. Zum Run -> Run configurations...
  3. Aus der linken Liste wählen Sie Ihre Klasse aus der Liste unter Java Application oder durch seinen Namen Filterkasten eingeben.
  4. Wählen Sie die Registerkarte Argumente und schreiben Sie Ihre Argumente in Program arguments Box. Nur für den Fall, dass es nicht klar ist, sind sie whitespace-getrennt, so würde "a b c" (ohne Anführungszeichen) bedeuten, dass Sie die Argumente a, b und c an Ihr Programm übergeben würden.
  5. Klasse starten wieder wie in Schritt 1.

ich jedoch empfehlen nur JUnit/Wrapper-Klasse wie Uri da hat gesagt, dass, wie Sie viel bessere Kontrolle über die aktuellen Parameter erhalten als durch dies zu tun .

+0

Ich denke, dass Thilo/Uri über eine einfache Möglichkeit sprechen, dies zu tun _without_ in das Dialogfeld "Ausführen" zu gehen - wie seine Frage besagt. –

+0

Ich musste das Argument filename angeben, da es Leerzeichen enthielt. Vielen Dank – danny117

0

Eine weitere Idee:

Legen Sie alle Ihre Parameter in einer Eigenschaftsdatei (ein Parameter = eine Eigenschaft in dieser Datei), dann in dem Hauptmechanismus, laden Sie diese Datei (mit Properties.load(*fileInputStream*)). Also, wenn Sie ein Argument ändern möchten, müssen Sie nur Ihre Datei args.properties bearbeiten, und starten Sie Ihre Anwendung ohne weitere Schritte zu tun ...

Natürlich ist dies nur für Entwicklungszwecke, aber kann wirklich hilfreich, wenn Sie Ihre Argumente oft ändern müssen ...

Verwandte Themen