Interpunktion in der Java -Quelle wurde in akzentuierten Buchstaben geändert, wenn sie in IFS kopiert werden
-
14-10-2019 - |
Frage
Ich versuche, ein RPGLE -Programm auszuführen, das Java -Methoden verwendet. Ich verwende den Java -Code (xxxx.java -Datei) aus meinem System (Windows XP) über FTP in das AS/400 IFS -Verzeichnis. Nach dem Übertragen an IFS wird die Datei CCSID als 819 angezeigt.
Ich kompile die .java -Datei in QSH, es wird kein Fehler angezeigt. Es werden jedoch zwei Klassendateien generiert. dhMailer.java
→ Mailer.class
und Mailer$1.class
Aber wenn ich mein RPGLE -Programm nenne, wird eine Java -Ausnahme angezeigt ...
Java exception received when calling Java method (C G D F)...
Application error. RNX0301 unmonitored by MAILERDEMO at statement 000000500
Als ich das sah Mailer.java
Datei in IFS durch Drücken von Option 5, Symbole wie {
, }
, [
, ]
, !
, /
, \
usw. werden in einige andere Symbole geändert.
Bitte schlagen Sie mir einige Lösungen dafür vor, damit ich dieses Programm ausführen kann. Wie kann ich die .java -Datei auf IFS übertragen, ohne die Zeichen in einige andere zu ändern?
Hier sind einige Details .....
System CCSID -Wert - 819
Job ccsid - 273
Mein Java -Quellcode im IFS -Verzeichnis:
// 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 -Ausnahme gezeigt, das RPGLE -Programm ausgeführt hat:
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...
Lösung
Wenn Sie Ihre Quelle mit Javac in QSH kompilieren können, wurde der Java -Quellcode selbst so übertragen, dass er für Javac akzeptabel gemacht wurde (was keine Code -Seitenkonvertierung vorliegt und erwartet, dass die gelesenen Bytes in 819 liegen). Der Mailer $ 1.CLASS stammt aus einer anonymen Klasse in Mailer (ein neuer Foobar () mit einem {} -Block danach).
Dass es für Sie falsch aussieht, würde ich dann erwarten, dass das AS/400 -System höchstwahrscheinlich nicht mit Ihrem 5250 -Emulator für die verwendeten Zeichensets zustimmt, und ich würde mir keine Sorgen machen (solange Javac funktioniert).
Ihre Fehlermeldung zeigt jedoch an, dass zwischen dem RPG -Header ein Missverhältnis besteht, der beschreibt, welche Java -Methode Sie aufrufen möchten, und der tatsächlich dort ist. Für mich sieht es so aus, als ob Sie "Demo.Mailer.SendSimplemail (String, String, String, String)" aufrufen möchten, die eine Zeichenfolge zurückgeben sollten, und Sie haben keine solche Methode.
Andere Tipps
IMO Es gibt überhaupt keinen Grund, Code auf den Iserien zu kompilieren ... Entwickeln, testen und den Code auf einer Workstation erstellen ... dann das Anwendungsjar auf dem Host bereitstellen und testen.