Пунктуация в источнике Java изменилась на акцентированные буквы при копировании в IFS

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

Вопрос

Я пытаюсь запустить программу 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

Работа 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... 
Это было полезно?

Решение

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

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

Тем не менее, ваше сообщение об ошибке указывает, что между заголовком RPG есть несоответствие, описывающее, как вы хотите назвать метод Java, и тем, который на самом деле существует. Для меня кажется, что вы хотите вызвать "demo.mailer.sendiMplemail (строка, строка, строка, строка)", который должен вернуть строку, и у вас нет такого метода.

Другие советы

IMO нет никаких причин для компиляции кода на Iseries ... Разработать, тестировать и создавать код на рабочей станции ... затем развернуть и протестировать JAR на хосте.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top