在命令行上的iSeries上运行Java程序



我已经创建了一个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')

那也不起作用。我在做什么错?

成功完成了很多次,您的最后一次尝试似乎很接近,但是将类参数更改为指向包含主方法的类文件。ANL0106J似乎是一个很奇怪的班级名称..示例是:

CLASS(com.company.test.ApplicationMain)

使用完整的路径名指向所需的罐子。例如:

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

为了使事情变得更容易,您甚至可以使用Maven或Gradle之类的东西创建构建物,甚至可以将您的依赖性包含在Jar文件中,然后可以将其配置为生成脂肪罐。本质上,这些罐子包含您应用程序所依赖的其他JAR文件。这样,即使您在IBM上更新了IBM I Machine上的单个JAR文件后,您也可以很确定您的应用程序将继续工作。例如,ShadowJar使用Gradle项目很容易设置,该项目将为您做到这一点。然后,这只是运行bootjar gradle任务并使用runjva命令的问题,只需指向您的单个jar即可。请不要陷入依赖管理地狱。通过使用Maven或Gradle之类的东西来节省自己和未来的开发人员。Gradle/Maven甚至可以使用Maven存储库来管理使用诸如Sonatype Nexus之类的Maven存储库,该工具也可以在本地托管。如果您的罐子有有效的清单,则不必做其他事情。看起来像这样:

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

对于使用CI特别有用,CI可以从GIT存储库中为您构建罐子,并将胖罐放在正确的路径上,而您不必做任何事情。使用Apache WebSphere Application Server,在AS400上设置Jenkins并不难,该服务器可以用于托管战争文件,简单地将其用于托管战争文件(但可以做得比这更重要:P)。

地狱,仅对runjva命令使用一个jar也应加快启动应用程序所需的时间,因为它只需要验证一个jar即可。只是思考的食物。顺便说一句,这是Maven的条目:https://mvnrepository.com/artifact/com.jcraft/jsch/0.1.55

在Java/react Devs的侧面注:是的,Java/React开发人员可以使用Runjva命令将IBM I现代化IBM I开发现代化以运行Spring Boot应用程序!我们正在使用Spring Boot后端系统成功运行React的前端应用程序,如预期的那样非常快:)

(在Reddit上给您的相同答案,只需在此平台上,即可使其可见,以便在stackoverflow上寻找它)

最新更新