我有一个从 RPGLE 调用的 Java 代码,这个 Java 代码调用另一个 RPGLE 程序。在调用或在 Java 中打开任何文件期间,它无法识别当前用户库列表。
如何确定执行 java 代码的库列表?如何让它在当前用户配置文件的库列表中运行?
我有一个从 RPGLE 调用的 Java 代码,这个 Java 代码调用另一个 RPGLE 程序。在调用或在 Java 中打开任何文件期间,它无法识别当前用户库列表。
如何确定执行 java 代码的库列表?如何让它在当前用户配置文件的库列表中运行?
您可以通过 JTOpen 项目的 AS400 类访问库列表的不同部分。
Job job = as400.getJobs(AS400.COMMAND)[0];
String[] systemLibraryList = job.getSystemLibraryList();
String currentLibrary = job.getCurrentLibrary();
String[] userLibraryList = job.getUserLibraryList();
在 AS/400 上启动的 Java 程序中,您可以从java.library.path. 来自 V6R1 32 位 JVM 的示例内容。
// java.library.path=/QSYS.LIB:
// /QSYS.LIB/QSYS2.LIB:
// /QSYS.LIB/QHLPSYS.LIB:
// /QSYS.LIB/QUSRSYS.LIB:
// /QSYS.LIB/QSHELL.LIB:
// /QSYS.LIB/OUTQLIB.LIB:
// /QSYS.LIB/QGPL.LIB:
// /QSYS.LIB/QTEMP.LIB:
// /QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit/jre/lib/ppc:
// /QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit/jre/lib/ppc/classic
按冒号拆分,仅考虑以 /QSYS.LIB/ 开头并以 .LIB 结尾的那些,提取库名称。
由于 Java 最适合使用 jt400.jar,因此您在调用目标程序之前对系统库列表中不存在的那些库的服务器作业调用 CHGLIBL。
注意:我在 5 年前做过这项工作。新 JVM 的行为可能有所不同。