Parameter beim Start der App übergeben

Marc79

Mitglied
Hallo zusammen,

ich habe wieder eine Idee und habe bisher nicht wirklich etwas gefunden, dass mir hilft.

Ich habe jetzt eine Applikation geschrieben, die unterscheiden soll, ob sie manuell per Doppelklick oder durch z.B. eine Batch-Datei (Schedule-Task) gestartet wurde.

Wenn Sie per Batch gestartet wird (z.b. autoImport.bat) würde ich gerne meine App
Code:
Import.jar -auto
starten wollen, also mit einem Zusatz "auto".

Wie kann ich dass jetzt allerdings innerhalb der App abfangen? Sie soll ja jetzt erkennen, dass sie einen Startparameter erhalten hat.

Dann entscheidet sich, wie es weiter geht mit den Methoden
Code:
if(auto)
{
   runAuto();
}
else
{
   shoFrm();
}
 
Du kannst die Parameter, welche du der Applikation übergibst aus dem String Array "args" auslesen.

So wuerde ich das machen.

Java:
package ch.sushicutta;

public class GetArgumentFromMain {

	public static void main(String[] args) {

		boolean hasAutoFlag = false;

		int i = 1;
		for (String string : args) {
			System.out.println("Argument " + i + ": " + string);
			i++;

			if ("auto".equals(string) || "-auto".equals(string)
					|| "--auto".equals(string)) {
				hasAutoFlag = true;
				System.out.println("Das Flag \"auto\" wurde gesetzt.");
			}
		}

		if (hasAutoFlag) {
			runAuto();
		} else {
			shoFrm();
		}

	}
	
	private static void runAuto() {
		// do something...
	}

	private static void shoFrm() {
		// do another thing...
	}

}
 
Zuletzt bearbeitet:
Das funtioniert schon mal prima ... ich kann also meine Parameter abfangen.

Nun ist mir aber noch aufgefallen, dass ich zwei Classes habe:

die ITSP_Directory_LoaderApp.java
und ITSP_Directory_LoaderView.java

die public static void main(String[] args) befindet sich in ITSP_Directory_LoaderApp.java. Hier prüfe ich bereits ab, ob Parameter mitgegeben wurden.
Meinen Aufruf will ich aber in der ITSP_Directory_LoaderView.java starten. Dort ist nämlich eine Methode bereits einprogrammiert.

Wie mache ich den Absprung dahin ? (Sorry, bin Java-Neuling und verstehe noch nicht alle Abläufe)
 
Moin,

Nun ist mir aber noch aufgefallen, dass ich zwei Classes habe:

die ITSP_Directory_LoaderApp.java
und ITSP_Directory_LoaderView.java

die public static void main(String[] args) befindet sich in ITSP_Directory_LoaderApp.java. Hier prüfe ich bereits ab, ob Parameter mitgegeben wurden.
Meinen Aufruf will ich aber in der ITSP_Directory_LoaderView.java starten. Dort ist nämlich eine Methode bereits einprogrammiert.

Wie mache ich den Absprung dahin ? (Sorry, bin Java-Neuling und verstehe noch nicht alle Abläufe)

Das hängt davon, wie Du Dein Programm aufgebaut hast und was Du wie aufrufst.
Hat jede der beiden Klassen eine eigene main()-Methode und ist somit eigenständig aufrufbar?
Dann übergib' halt die Parameter an "LoaderView" !

Falls nicht, dann musst Du sie wie zuvor an die main in "LoaderApp" und musst dann die Werte beim dortigen Aufruf der Startmethode von "LoaderView" dorthin übergeben !

Poste ggf. den gesamten Code, so dass man sehen kann, was wann aufgerufen wird!

Gruß
Klaus
 
@Klaus:

Sorry, dass ich mich erst jetzt bedanke, aber ich musste noch paar andere Sachen erledigen.
Ich habe mich etwas mit befasst und kam zu meiner Lösung.

Um deine Frage zu beantworten. Nur eine von den beiden Klassen hat eine main-Methode und ich mache es wie folgt. args abfangen und einfach an die andere Klasse übergeben.

Läuft perfekt! vielen Dank für den Tipp.

@sushicutt: Auch dir ein Danke für den Tipp und die Erklärung!

Langsam freunde ich mich auch mit Java an ;-)

Gruß Marc
 
Zurück