Pregunta

Estoy intentando ejecutar un programa RPGLE que utilizan métodos de Java. Estoy transfiriendo el código de Java (archivo xxxx.java) de mi sistema (Windows XP) en el directorio IFS AS / 400 a través de FTP. Después de transferirlo a IFS, el CCSID del archivo se muestra como 819.

Estoy compilando el archivo .java en QSH, no se muestra ningún error. Sin embargo, dos archivos de clase se generan. es decir Mailer.java ? Mailer.class y Mailer$1.class

Pero cuando estoy llamando a mi programa de RPGLE, se muestra una excepción de Java ...

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

Cuando vi el archivo Mailer.java en IFS mediante la opción 5 prensado, símbolos como {, }, [, ], !, /, etc. \ se cambian a algunos otros símbolos.

Así PLZ me sugieren algunas soluciones para esto, para que pueda ejecutar este programa. Cómo transferir el archivo .java a IFS sin cambiar los caracteres de algunos otros diferentes?

A continuación algunos detalles .....

Sistema CCSID Valor - 819

Trabajo CCSID - 273

código fuente de Java en el directorio Mi 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();                                       
ü                                                                              

Excepción de Java muestra ejecutando el programa de 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... 
¿Fue útil?

Solución

Si se puede compilar las fuentes con javac de QSH luego el código fuente de Java en sí fue transferido de una manera que lo hicieron aceptable para javac (que no hace la conversión de página de código y espera que los bytes leídos estar en 819). El Mailer $ 1.class proviene de una clase anónima en Mailer (un nuevo FooBar () {} con un -Block después).

Esto parece incorrecto, lo haría luego esperar a ser porque el sistema AS / 400 es muy probable que no estar de acuerdo con su emulador 5250 en los juegos de caracteres utilizados, y yo no me preocuparía (siempre y cuando las obras javac) .

Su mensaje de error indica sin embargo, que hay un desajuste entre la cabecera RPG que describe qué método Java que desea llamar, y la que está realmente allí. Me parece que desea invocar "demo.Mailer.sendSimpleMail (String, String, String, String)", que debe devolver una cadena, y no tener un procedimiento de este tipo.

Otros consejos

OMI no hay razón alguna para compilar el código en el iSeries ... desarrollar, probar y construir el código en una estación de trabajo ... a continuación, implementar y probar el tarro de aplicación en el equipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top