Пунктуация в исходном коде Java заменена на акцентированные буквы при копировании в IFS - PullRequest
2 голосов
/ 30 декабря 2010

Я пытаюсь запустить программу RPGLE, которая использует методы Java. Я передаю код Java (файл xxxx.java) из моей системы (Windows XP) в каталог AS / 400 IFS через FTP. После передачи в IFS файл CCSID отображается как 819.

Я компилирую файл .java в QSH, ошибки не отображаются. Но два файла классов генерируются. то есть Mailer.javaMailer.class и Mailer$1.class

Но когда я вызываю свою программу RPGLE, появляется исключение Java ...

Java exception received when calling Java method (C G D F)... 
Application error.  RNX0301 unmonitored by MAILERDEMO at statement 000000500

Когда я увидел файл Mailer.java в IFS, нажав опцию 5, символы, такие как {, }, [, ], !, /, \ и т. Д. изменено на некоторые другие символы.

Поэтому, пожалуйста, предложите мне несколько решений для этого, чтобы я мог запустить эту программу. Как перенести файл .java в IFS, не меняя символы на другие?

Вот некоторые подробности .....

Значение CCSID системы - 819

Job CCSID - 273

Мой исходный код Java в каталоге 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 при запуске программы 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... 

Ответы [ 2 ]

3 голосов
/ 30 декабря 2010

Если вы можете скомпилировать ваш исходный код с помощью javac в QSH, тогда сам исходный код Java был передан таким образом, чтобы сделать его приемлемым для javac (который не выполняет преобразование кодовой страницы и ожидает, что прочитанные байты будут в 819). Класс Mailer $ 1. происходит от анонимного класса в Mailer (новый FooBar () с последующим {} -блоком).

То, что это выглядит неверно для вас, я тогда ожидал бы, потому что система AS / 400, скорее всего, не согласуется с вашим эмулятором 5250 по используемым наборам символов, и я не буду беспокоиться (пока работает javac) .

Ваше сообщение об ошибке указывает на то, что существует несоответствие между заголовком RPG, описывающим, какой метод Java вы хотите вызвать, и тем, который на самом деле существует. Мне кажется, что вы хотите вызвать «demo.Mailer.sendSimpleMail (String, String, String, String)», который должен возвращать строку, а у вас нет такого метода.

1 голос
/ 30 декабря 2010

IMO, нет никаких причин для компиляции кода на iSeries ... разработка, тестирование и сборка кода на рабочей станции ... затем развертывание и тестирование jar приложения на хосте.

...