Interpunktion in der Java -Quelle wurde in akzentuierten Buchstaben geändert, wenn sie in IFS kopiert werden

StackOverflow https://stackoverflow.com/questions/4561875

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.javaMailer.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... 
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top