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

时间:2019-03-14 19:15:32

标签: java jar ibm-midrange

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

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

1 个答案:

答案 0 :(得分:0)

已经成功完成了很多次,您的上一次尝试似乎非常接近,但是将CLASS参数更改为指向包含main方法的类文件。 ANL0106J看起来像一个很奇怪的类名称。示例将是:

CLASS(com.company.test.ApplicationMain)

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

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

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

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

对于使用CI尤其有用,CI可以从GIT存储库为您构建JAR,并将胖子jar放在正确的路径中,而您无需做任何事情。简而言之,使用apache WebSphere Application Server在as400上设置Jenkins并不困难,简而言之,该选项可用于托管WAR文件(尽管:P可以做很多事情)。

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

在Java / react开发者的旁注中:是的,Java / react开发人员,可以使用RUNJVA命令使ibm开发现代化,以运行Spring引导应用程序!我们正在使用Spring Boot后端系统成功运行React前端应用程序,工作异常快,符合预期:)

(在Reddit上给您相同的答案,只是在此平台上使之对于正在Stackoverflow上寻找它的其他人可见)