Hallo zusammen..
Ich versuche im Moment vezweifelt eine Java-Methode direkt aus einem RPGLE-PGM aufzurufen. Leider mit sehr besch.. eidenem Erfolg. Vieleicht kann mir jemand zu folgendem Konstrukt einen Tip geben..
Definition im RPG:
Die Java-Klasse GenSign, in welcher die Methode getSignature angesprochen werden soll liegt in einem jar-File (test.jar). Der entsprechende CLASSPATH wird (vorerst mal zum Test) über eine interne Variable gesetzt:Code:* Methode zum Signieren d getSignature PR O EXTPROC(*JAVA: d 'app.tools.GenSign': d 'getSignature') d CLASS(*JAVA:'java.lang.String') d STATIC d text O CLASS(*JAVA:'java.lang.String') * Erstellen String-Objekt aus Textfeld d crtString PR O EXTPROC(*JAVA: d 'java.lang.String': d *CONSTRUCTOR) d Class(*JAVA:'java.lang.String') d bytes 255A Const Varying
Der CLASSPATH wird dann hier entsprechend gesetzt:Code:D testCP S 255A varying D inz('/test1/test/test.jar')
Bei Aufruf des Programms (CALL TESTPGM '123456789') wird der entry-parameter vorerst über crtString konvertiert (funktioniert) und dann an die besagte Methode aus GenSign übergeben (getSignature) ..Code:// ------------------------------------------------------------- // sr fix_classpath = Verzeichnis der aufzurufenden Java-Klasse // einstellen // ------------------------------------------------------------- begsr fix_classpath; ClassPath = getEnvVar('Classpath'); if Classpath = ''; Classpath = '.:'; endif; fnd = %scan(testCP:ClassPath); if fnd <= 0; setEnvVar('Classpath=' + classPath + %trim(testCP) + ':'); endif; ClassPath = getEnvVar('Classpath'); // fuer Debug endsr;
.. dann kommt folgender Fehler:Code:exsr fix_classpath; datain = crtString(inout); // Var -> String[] dataout = getSignature(datain); // Signatur erstellen inout = getBytes(dataout); // String[] -> Var *inlr = *on; return;
Hat mir jemand evt. einen Tip, was ich falsch mache ?Code:Weitere Nachrichteninformationen Nachrichten-ID . . . . : RNX0301 Bewertung . . . . . . : 50 Nachrichtenart . . . . : Diagnose Sendedatum . . . . . . : 24.02.12 Sendezeit . . . . . . : 09:41:23 Nachricht . . . : Java-Ausnahme beim Aufrufen der Java-Methode empfangen. Ursache . . . . : RPG-Prozedur TESTPGM in Programm XYZ/TESTPGM hat Java-Ausnahme "java.lang.NoClassDefFoundError: app/tools/GenSign" empfangen, als die Methode "getS" mit Kennung "" in Klasse "app.tools.GenSign" aufgerufen wurde. Fehlerbeseitigung: Mit Hilfe des Benutzers, der für die Programmpflege verantwortlich ist, die Fehlerursache bestimmen. Technische Beschreibung . . . . . . . : Gibt die Ausnahme an, dass die Java-Klasse nicht gefunden wurde, sicherstellen, dass sich die Klasse für die Methode in dem Klassenpfad befindet. Gibt die Ausnahme an, dass die Java-Methode nicht gefunden wurde, den Methodennamen und die Kennung überprüfen. Ist die Kennung nicht korrekt, den RPG-Prototyp für die Methode
DANKE und Grüße![]()
Stefan
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks