La punteggiatura in sorgente di Java cambiato in lettere accentate quando copiati IFS
-
14-10-2019 - |
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...
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.