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:
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
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:
D testCP          S            255A   varying                     
D                                     inz('/test1/test/test.jar')
Der CLASSPATH wird dann hier entsprechend gesetzt:

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;
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:
                                                                
exsr fix_classpath;                                             
                                                                
datain  = crtString(inout);              // Var -> String[]     
dataout = getSignature(datain);          // Signatur erstellen  
inout = getBytes(dataout);               // String[] -> Var     
                                                                
*inlr = *on;                                                    
return;
.. dann kommt folgender Fehler:
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
Hat mir jemand evt. einen Tip, was ich falsch mache ?

DANKE und Grüße

Stefan