非常感谢您在从 RPG 调用 Java 方法时解决 ClassNotFoundError
的帮助。当除我之外的任何其他用户尝试运行我的程序时,就会发生这种情况。
从字面上看,这似乎是 CLASSPATH 或 jar 文件访问的问题,但我也从这方面进行了尝试。
说明: 我有一个 RPG 程序,它调用 jar 文件中的 java 方法。我的 CLASSPATH 包含正确的 jar(JtOpen jar 文件)。当我从绿屏和黑屏(Iseries session 管理器)运行 RPG 程序时,它运行得很好。每当其他用户尝试以相同的方式运行它时,它就会抛出以下错误消息:
RPG 过程在调用带有签名“([Ljava.lang.String;Ljava.lang.String;I”的方法“invokeApiPgm”时收到 Java 异常 java.lang.NoClassDefFoundError: com.ibm.as400.access.AS400 [Ljava.lang.String;)Z”类“callIceApi.CallIceApiPgm”
。
上面的签名也和我调用的方法的签名相同。 Java 提示的类似乎是 AS400 的类还是我的类?我可以看到 AS400 类是公开的。我的类的构造函数已成功创建类对象。只是在调用主方法 invokeApiPgm
时失败。
你们认为我错过了什么或搞砸了什么,伙计们?
感谢您的帮助!
特韦勒
最佳答案
显式设置类路径然后调用 RPG 程序的 CL 程序怎么样?
中电:
PGM
ADDENVVAR ENVVAR('CLASSPATH') VALUE('.:/dir1:/dirA/dirB:/javaToolkit/jt400.jar') LEVEL(*JOB)
CALL PGM(MYLIB/MYPGM)
ENDPGM
This page也可能有帮助。
关于java - 从 RPG 调用 Java,除我之外的所有用户均出现 ClassNotFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19360922/