PDA

View Full Version : JAR mit Paramtern richtig aufrufen



JoergHamacher
05-09-22, 11:04
Hallo,

ich muss ein JAR-Programm zur Erzeugung eines QR-Codes in ein interaktives Programm integrieren - ich dachte an einen Aufruf von JAVA(RUNJVA) oder QSH in QCMDEXC.

Der Aufruf lautet im Prinzip so:
java -jar /home/qrcodegenerator2.jar -f /home/QRCODE.JPG -s 1024 -c "ABCDEFG HIJK"

Die Werte hinter -f, -c und -s sind variabel, der ganze Aufruf-String wird also im Programm zusammengebastelt.

Meine Probleme sind nun:

wenn ich es in JAVA so einbinde:


JAVA CLASS('/LANSA_l15pgmlib/jsm/Instance/smh/qrcodegenerator2.jar') PARM(
'-f /home/QRCODE.PNG' '-s 1024' '-c ABCDEFG')
dann schimpft Java und sagt: Unknown option f /home/qrcode.png.
Das "-" vor dem "f" wird irgendwie ignoriert.





wenn ich es über QSH aufrufe, wird das JAR Programm durchgeführt und die Datei erstellt, aber:


dann öffnet sich die QSH-Ungebung, um mir zuerst mitzuteilen java.version wurde als Eingabe verwendet. Sie wird nur als Ausgabe verwendet
und hat keine Auswirkung auf die JVM-Initialisierung.
Und mir nach Abschluss zu sagen: Die Eingabetaste drücken, um die Terminalsitzung zu beenden.


Wie kann ich das über JAVA/RUNJVA richtig aufrufen?
Wie kann ich beim QSH.Aufurf den AUfurd der Shell-Umgebung unterbinden?

Für Vorschläge wäre ich Euch sehr dankbar.

Liebe Grüße,
Jörg

Fuerchau
05-09-22, 11:20
Das kommt ganeu darauf an, wie deine Main(String args[]) die Parameter auswerten will.
I.d.R. wird jeder Paramter einzeln erwartet.
Enthalt args[1] = "-f" so wird in args[2] der Parameter dazu erwartet.
Also im Endefffekt nichts anderes, was du mit RPG/CL/... ebenso machst.

clp(&p1 &P2) => call pgm('P1' 'P2')

Mit einem call call pgm('P1 P2') ist P2 leer und P1 empfängt sogar nicht alles.

Also ist dar Aufruf wahrscheinlich:

PARM(
'-f' '/home/QRCODE.PNG' '-s' '1024' '-c' 'ABCDEFG')

JoergHamacher
05-09-22, 13:19
Hallo Fuerchau,

ganz lieben Dank für die schnelle Antwort - so funktioniert's!

Viele Grüße, Jörg

Fuerchau
05-09-22, 15:05
Das ist wie in der schönen alten DOS-Welt. Aktuell auch als CMD-Box noch bekannt.
Parameter werden bei Leerzeichen getrennt übergeben, was bei Pfade mit Leerzeichen dann in Hochkommata zu setzen ist.
Auf der IBM i gibts da nur ab und zu das Problem, dass Kleinbuchstaben in Großbuchstaben gewandelt werden, was ebenso mit Hochkomma verhindert wird.

Robi
05-09-22, 17:42
Wenn du das öfter am Tag brauchst, würde ich einen Java Job erstellen, der auf eine dataq horcht.
Jedesmal Java starten ist 'suboptimal'