Domanda

Sto cercando di eseguire un programma RPGLE che utilizzano metodi Java. Mi trasferiro il codice Java (file xxxx.java) dal mio sistema (Windows XP) nella directory IFS AS / 400 tramite FTP. Dopo il trasferimento a IFS, il file CCSID viene visualizzato come 819.

sto preparazione della documentazione .java in QSH, viene mostrato alcun errore. Ma due file di classe vengono generati. cioè Mailer.java ? Mailer.class e Mailer$1.class

Ma quando io chiamo il mio programma RPGLE, viene visualizzato un'eccezione java ...

Java exception received when calling Java method (C G D F)... 
Application error.  RNX0301 unmonitored by MAILERDEMO at statement 000000500

Quando ho visto il file Mailer.java in IFS premendo l'opzione 5, simboli come {, }, [, ], !, /, \ ecc sono cambiato in alcuni altri simboli.

Quindi plz suggerire alcune soluzioni per questo, in modo che possa eseguire questo programma. Come trasferire il file .java al IFS senza cambiare i caratteri da alcuni tra quelli diversi?

Ecco alcuni dettagli .....

Sistema CCSID Value - 819

Job CCSID - 273

Il mio codice sorgente Java nella directory IFS:

// Load Properties File                                                        
if (is |= null) ä                                                              
    try ä                                                                      
        properties = new Properties();                                         
        properties.load(is);                                                   
    ü                                                                          
    catch (Exception e) ä                                                      
        System.err.println("Error " + "Ö"" + e.getLocalizedMessage()           
            + "Ö"" + " loading AS/400 Connection Properties.");                
        throw new RuntimeException(e);                                         
    ü                                                                          
ü                                                                              

// Assume properties passed as system properties                               
else ä                                                                         
    properties = System.getProperties();                                       
ü                                                                              

Java Eccezione mostrato in esecuzione del programma RPGLE:

Message ID . . . . . . :   RNQ0301       Severity . . . . . . . :   99         
Message type . . . . . :   Inquiry                                             
Date sent  . . . . . . :   12/30/10      Time sent  . . . . . . :   11:31:57   

Message . . . . :   Java exception received when calling Java method (C G D    
  F).                                                                          
Cause . . . . . :   RPG procedure MAILERDEMO in program SAHOON1/MAILERDEMO     
  received Java exception "java.lang.NoSuchMethodError: sendSimpleMail" when   
  calling method "sendSimpleMail" with signature                               
  "(Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;Ljava.lang.String;)L 
  java.lang.String;" in class "demo.Mailer".                                   
Recovery  . . . :   Contact the person responsible for program maintenance to  
  determine the cause of the problem.                                          
Possible choices for replying to message . . . . . . . . . . . . . . . :       
  D -- Obtain RPG formatted dump.                                              
                                                                       More... 
È stato utile?

Soluzione

Se è possibile compilare il sorgente con javac nel QSH quindi il codice sorgente di Java stesso è stato trasferito in un modo che ha reso accettabile per javac (che non fa la conversione pagina di codice e si aspetta la lettura dei byte di essere in 819). Il Mailer $ 1.class proviene da una classe anonima in Mailer (un nuovo FooBar () con un {} -BLOCCO in seguito).

che sembra errato a voi, vorrei poi si aspettano di essere perché il sistema AS / 400 è molto probabilmente non d'accordo con la vostra 5250 sui set di caratteri utilizzati, e io non mi preoccuperei (finché opere javac) .

Il messaggio di errore indica però che non c'è corrispondenza tra l'intestazione RPG descrivere ciò metodo Java che si desidera chiamare, e quello che in realtà è lì. A me sembra che si vuole invocare "demo.Mailer.sendSimpleMail (String, String, String, String)", che dovrebbe restituire una stringa, e non si dispone di un tale metodo.

Altri suggerimenti

IMO non c'è nessuna ragione al mondo per compilare il codice sulla iSeries ... sviluppare, testare e sviluppare il codice su una workstation ... quindi distribuire e testare il vaso applicazione sull'host.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top