Пунктуация в источнике Java изменилась на акцентированные буквы при копировании в IFS
-
14-10-2019 - |
Вопрос
Я пытаюсь запустить программу RPGLE, которая использует методы Java. Я передаю код Java (файл xxxx.java) из моей системы (Windows XP) в каталог AS/400 IFS через FTP. После передачи его в IFS файл CCSID отображается как 819.
Я собираю файл .java в QSH, ошибка не показана. Но два файла класса генерируются. т.е.Mailer.java
→ Mailer.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 на хосте.