Puntuacion en la fuente de Java cambiado a letras acentuadas cuando se copian en IFS
-
14-10-2019 - |
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...
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.