Пунктуация в исходном коде Java заменена на акцентированные буквы при копировании в IFS
Я пытаюсь запустить программу 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...
2 ответа
Если вы можете скомпилировать ваш исходный код с помощью javac в QSH, тогда сам исходный код Java был передан таким образом, чтобы сделать его приемлемым для javac (который не выполняет преобразование кодовой страницы и ожидает, что прочитанные байты будут в 819). Mailer$1.class происходит от анонимного класса в Mailer (новый FooBar() с {}-блоком впоследствии).
То, что это выглядит неверно для вас, я бы тогда ожидал, потому что система AS/400, скорее всего, не согласуется с вашим эмулятором 5250 по используемым наборам символов, и я бы не стал беспокоиться (пока работает javac).
Ваше сообщение об ошибке указывает на то, что существует несоответствие между заголовком RPG, описывающим, какой метод Java вы хотите вызвать, и тем, который на самом деле существует. Мне кажется, что вы хотите вызвать "demo.Mailer.sendSimpleMail(String, String, String, String)", который должен возвращать строку, а у вас нет такого метода.
IMO, нет никаких причин для компиляции кода на iSeries ... разработка, тестирование и сборка кода на рабочей станции... затем развертывание и тестирование jar-приложения на хосте.