Parameterübergabe an *.jar

Status
Nicht offen für weitere Antworten.

magic_halli

Bekanntes Mitglied
Hi,

ich rufe aus einer Anwendung heraus ein externes *.jar auf und übergebe beim Aufruf einige StringParameter, die dann im *.jar verwendet werden sollen:
Code:
String sTest1 = "ich bin";
String sTest2 = "Parameter2";
Runtime rt1 = Runtime.getRuntime();
rt1.exec("java -jar /home/workspace/Test.jar " + sTest1 + " " + sTest2);

Im Test.jar lese ich diese Parameter wieder aus und lasse sie mir anzeigen:
Code:
public void main(String[] args){

String sTest1 = args[0];
String sTest2 = args[1];

JOptionPane.showMessageDialog( null, sTest1 );
JOptionPane.showMessageDialog( null, sTest2 );

}
In der ersten MessageBox steht jetzt allerdings nur "ich" und in der zweiten "bin"... die Ausgabe "Parameter2" wird ganz weggelassen!
Ich denke, dass liegt daran, weil ich als sTest1 einen String mit Leerzeichen übergeben und somit jedes Wort einen eigenen Übergabeparameter darstellt. Somit habe ich theoretisch (und praktisch) 3 Parameter, die in mein Test.jar eingehen?!

Ich kann also gar keine Strings im eigentlichen Sinne übergeben, sondern nur einzelne Worte?!
Kann man das trotzdem irgendwie arrangieren, dass ich mein Vorhaben hier so durchdrücken kann? Welche Möglichkeiten gibts da evtl. noch, die mir unbekannt sind?

Gut, ich könnte vorher meine Variablen auf Leerzeichen prüfen, diese dann bspw. durch "_" ersetzen und auf der anderen Seite das "_" wieder durch Leerzeichen ersetzen, aber vielleicht gibts da ja noch mehr?

Danke und Gruß
 
Der Code in Deiner main-Methode ist einfach zu starr. Wie Du schon erkannt hast, wird jeder String einzeln übergeben. Was hindert Dich also, zunächst mit args.length die Größe des übergebenen Arrays zu prüfen und damit die Verarbeitung zu steuern?
 
Quaxli hat gesagt.:
Der Code in Deiner main-Methode ist einfach zu starr. Wie Du schon erkannt hast, wird jeder String einzeln übergeben. Was hindert Dich also, zunächst mit args.length die Größe des übergebenen Arrays zu prüfen und damit die Verarbeitung zu steuern?
...nichts hindert mich daran! Ich brauche aber nunmal genau meine 2 Parameter, weil ich den Inhalt dieser nunmal für die weitere Verarbeitung brauche! Somit weiß ich zwar (mittels args.length), dass mehrere Argumente übergeben wurden, aber deshalb kann ich leider nicht, in Abhängigkeit der Anzahl, entsprechend viele Variablen in der main anlegen :cry: .

Also werd ich nun doch vor der Übergabe alle Leerzeichen ersetzen und auf der anderen Seite wieder auseinanderfrimeln. ???:L
 
Aus dem Bauch raus und es jemals getestet zu haben:

Code:
rt1.exec("java -jar /home/workspace/Test.jar \"" + sTest1 + "\" \"" + sTest2+ "\"");
 
Hallo,

habe auch das Problem dass die Paramterübergabe an das Jar-File nicht funktioniert.
Ich will über VBA eine Jar-Datei starten, welche 2 Strings übergeben bekommt. Wie kann ich das bewerkstelligen?

wie muss der aufruf lauten wenn ich "abcd" und "efgh" übergeben möchte
Jar-File liegt auf C:\test.jar

vielen dank schon mal
 
Siehe: http://www.java-forum.org/java-basics-anfaenger-themen/114098-vba-jar-dateiaufruf.html

Code:
Shell ("java -jar C:\test.jar abcd efgh")

Sehe gerade, dass ich noch einen kleinen Fehler (fehlende Anführungszeichen am Ende) im genannten Thread hatte.

Allgemeiner (also mit berücksichtigten Leerzeichen) gehts so:
Code:
Const parameter As String = "abcd"
Const parameter2 As String = "efgh"
Shell ("java -jar C:\test.jar """ & parameter & """ """ & parameter2 & """")
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Zurück
Oben