运行 Java iSeries 命令行程序

Running Java program on iSeries on command line

我已经创建了一个 java 程序,我想从 iSeries 中 运行 它。我已经能够从 QSH 将它获取到 运行,所以我知道它已编译并且 运行 没问题,但我需要从命令行而不是 QSH 获取它 运行。该程序需要 jsch-0.1.55.jar 文件才能使程序正常工作,我不是 100% 确定如何使用它引用的程序调用 jar 文件。

我试过了

RUNJVA CLASS(ANL0106J) CLASSPATH('/JAVA/Jars/jsch-0.1.55.jar')

那没用。然后我试了

RUNJVA CLASS('/JAVA/Jars.jsch-0.1.55.jar':. ANL0106J) CLASSPATH('/Java/Jars/jsch-0.1.55.jar')

那也没用。我做错了什么?

已经多次成功完成此操作,您的最后一次尝试似乎很接近,但请更改 CLASS 参数以指向包含 main 方法的 class 文件。 ANL0106J 似乎是一个很奇怪的 class 名字。示例是:

CLASS(com.company.test.ApplicationMain)

使用完整路径名将 CLASSPATH 指向所需的 jar。例如:

RUNJVA CLASS(com.company.test.ApplicationMain) CLASSPATH('/test/app.jar:/test/dependency.jar')

为了使事情变得更简单,您甚至可以通过使用诸如 maven 或 Gradle 之类的东西来创建您的构建,从而将您的依赖项包含在您的 JAR 文件中,然后可以将其配置为生成 fat jar。本质上,这些是包含您的应用程序所依赖的其他 JAR 文件的 jar。这样,您还可以非常确定您的应用程序将继续工作,例如,即使在您更新了 ibm i 机器上的单个 jar 文件之后。例如,使用 gradle 项目可以很容易地设置 Shadowjar,它会为您完成这项工作。然后只需 运行 启动 bootjar gradle 任务并使用 RUNJVA 命令,只需指向您的单个 JAR。请不要陷入依赖管理地狱。通过使用像 maven 或 gradle 这样的东西来拯救你自己和未来的开发者。 Gradle/maven 甚至可以使用 Maven 存储库和 Sonatype Nexus 等工具管理依赖关系,该工具也可以在本地托管。如果您的 JAR 具有有效的清单,则您无需执行任何其他操作。它看起来像这样:

RUNJVA CLASS('/test/app.jar')

对于使用 CI 特别有用,它可以从 GIT 存储库为您构建 JAR 并将 fat jar 放在正确的路径中,而您无需执行任何操作。使用 apache WebSphere 应用程序服务器在 as400 上设置 Jenkins 一点也不难,它是一个可用于托管 WAR 文件的选项,简单地说(它可以做的远不止于此) :P).

该死,只为 RUNJVA 命令使用一个 jar 还应该加快启动应用程序所需的时间,因为它只需要验证一个 jar。只是值得深思。顺便说一下,这是 Maven 条目: https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55

java/react 开发人员的旁注:是的,Java/react 开发人员,可以使用 RUNJVA 命令将 ibm i 开发现代化到 运行 Spring 启动申请!我们成功地 运行ning 使用 spring 引导后端系统反应前端应用程序,工作速度非常快,正如预期的那样:)

(在 Reddit 上给了你同样的答案,只是在这个平台上让其他在 Whosebug 上寻找这个的人可见)