Hallo,

ich weiß, die Fragen zum Aufruf von Java aus RPG nerven wahrscheinlich langsam und Dieter wird zurecht davon abraten, aber die Situation läßt mir keine Wahl.

Ich habe eine Beispielklasse erstellt mit einer Methode gibEcho, die einen String erwartet, etwas drankettet und diesen ans RPG zurückgibt. javap -s gibt folg. Signatur aus:

public class Iseriestest2 extends java.lang.Object {
public Iseriestest2();
/* ()V */
public java.lang.String gibEcho(java.lang.String);
/* (Ljava/lang/String;)Ljava/lang/String; */
}


Die Klasse sieht so aus:

public class Iseriestest2 {
public String gibEcho(String echostring){
echostring = "Echo from SVSMAINZ:" + echostring;
return echostring;}}

Das RPG so: (hier als Link, dann ist die Formatierung noch da)

HTHREAD(*SERIALIZE) DftActGrp(*NO) ActGrp(*CALLER)
F
D str S O CLASS(*JAVA:'java.lang.String')
D fld S 10A VARYING
D
D makestring PR O EXTPROC(*JAVA:'java.lang.String':
D *CONSTRUCTOR)
D CLASS(*JAVA:'java.lang.String')
D parm 10A VARYING
D
D getbytes PR 10A EXTPROC(*JAVA:'java.lang.String':
D 'getBytes') VARYING
D
D gibEcho PR O EXTPROC(*JAVA:'Iseriestest2':
D 'gibEcho')

D CLASS(*JAVA:'java.lang.String')
C
C eval fld = 'ABCDEFGHIJ'
C eval str = makestring(fld)
C eval str = gibEcho(str)
C eval fld = getBytes(str)
C dsply fld
C eval *inlr = *on
C

Wenn ich richtig liege, ist der Prototyp für gibEcho hier auch mit einem Ein- und Ausgangsparameter jeweils vom Typ String definiert. Ich bekomme aber den Fehler RNQ0301
Ursache . . . . : RPG-Prozedur BESTABFRAG in Programm VDBTAO/BESTABFRAG hat
Java-Ausnahme "java.lang.NoSuchMethodError: gibEcho" empfangen, als die
Methode "gibEcho" mit Kennung "()Ljava.lang.String;" in Klasse
"Iseriestest2" aufgerufen wurde.


Laut Kennung meint die VM? hier, dass kein Eingabestring erwartet wird, oder ?? Wenn ich beim Prototyp von gibEcho aber zusätzlich ein String Objekt als Übergabewert definiere, wirds gar nicht erst kompiliert.

Bitte um Hilfe!