Ponctuation dans la source Java changé en lettres accentuées lors de la copie à l'IFS
-
14-10-2019 - |
Question
Je suis en train d'exécuter un programme de RPGLE qui utilisent des méthodes java. Je suis le code transfering java (fichier xxxx.java) de mon système (Windows XP) à l'AS / 400 répertoire IFS par FTP. Après IFS à transférer, le fichier CCSID est affiché comme 819.
Je suis la compilation du fichier .java dans SQE, aucune erreur est affichée. Mais deux fichiers de classe sont générés. c'est à dire.
Mailer.java
? Mailer.class
et Mailer$1.class
Mais quand je fais appel mon programme de RPGLE, une exception java est montré ...
Java exception received when calling Java method (C G D F)...
Application error. RNX0301 unmonitored by MAILERDEMO at statement 000000500
Quand j'ai vu le fichier Mailer.java
dans IFS en appuyant sur l'option 5, symboles comme {
, }
, [
, ]
, !
, /
, \
etc. sont changés à d'autres symboles.
Alors plz me suggérer des solutions pour cela, pour que je puisse exécuter ce programme. Comment transférer le fichier .java à IFS sans changer les caractères à certains les différents?
Voici quelques détails .....
Système CCSID Valeur - 819
Job CCSID - 273
code source Java dans mon répertoire 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 Exception programme en cours d'exécution montré 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...
La solution
Si vous pouvez compiler votre avec javac dans SQE puis le code source Java lui-même a été transféré d'une manière qui fait acceptable pour javac (qui ne fait pas la conversion de page de code et espère que les octets lus à être en 819). Le Mailer 1.class $ provient d'une classe anonyme Mailer (une nouvelle foobar () avec un {} -Block par la suite).
Qu'il semble inexact de vous, je puis attendre d'être parce que le système AS / 400 est très probablement pas d'accord avec votre émulateur 5250 sur les jeux de caractères utilisés, et je ne vous inquiétez pas (aussi longtemps que les travaux de javac) .
Votre message d'erreur indique cependant qu'il existe un décalage entre l'en-tête de RPG décrivant ce que la méthode Java que vous voulez appeler, et celui qui est en fait là. Pour moi, il semble que vous voulez appeler « demo.Mailer.sendSimpleMail (String, String, String, String) » qui devrait renvoyer une chaîne, et vous n'avez pas une telle méthode.
Autres conseils
OMI il n'y a aucune raison de compiler du code sur l'iSeries ... développer, tester et construire le code sur un poste de travail ... puis déployer et tester le pot d'application sur l'hôte.