Изменение моего ответа здесь теперь, когда я могу видеть трассировку стека. Проблема возникает, когда вы нажимаете нативный код (нативный, то есть вы в основном углубляетесь в уровень ОС или пользовательский код ОС).
Вы получаете недопустимое IOException для дескриптора (и тем самым я предполагаю, что это означает дескриптор файла (т. Е. FileDescriptor). Теперь большая разница между запуском его в QShell и запуском из RPG заключается в том, что код Java Вызывается из RPG, вероятно, вызывается с другим ID и / или уровнем привилегий. Возможно, вам придется внести изменения в iSeries для вашей программы, чтобы предоставить ей полномочия для Java, чтобы иметь необходимые полномочия делать то, что ей нужно. (Я знаю, вы бы думаю, что это то, что SecurityManager в Java подхватил бы ... но я знаю, что странные вещи могут случаться иногда, когда вы используете пользовательскую JVM (читай IBM) в пользовательской ОС (i5 / OS). Вы оставлены на милость поставщика (в данном случае IBM). Сделайте это (вещь с разрешениями) и посмотрите, решит ли это вашу проблему.
Также ... Я гуглил и обнаружил, что это связано с iSeries: https://www -304.ibm.com / support / docview.wss? Uid = nas379538999e744aad1862575b0006e28ab
Таким образом, может случиться так, что используемая ОС библиотека jt400 может иметь недостаток, и вам может понадобиться ее PTF и / или ваша JVM. Просто еще одна мысль о том, чтобы попробовать.