使用CL或RPGLE在ibmi上以编程方式检查java版本

使用CL或RPGLE在ibmi上以编程方式检查java版本,java,ibm-midrange,Java,Ibm Midrange,我需要检查IBMi上的java版本是否等于1.8 在我的CL程序中,有一个RUNJVA调用,它运行一个依赖于java1.8的jar文件。我只想在IBMi机器具有Java1.8时运行该命令 在IBMi上有很多方法可以查看java版本,但要以编程方式检查版本,我需要变量中的版本信息 一种方法是运行命令 RUNJVA类*版本输出*打印 并从spool文件中读取版本。然而,这种方法应该有效,但我正在寻找更无缝的方法。另外,读取spool文件以获取信息似乎不是一个好方法尝试以下操作: 使用RUNRMTCM

我需要检查IBMi上的java版本是否等于1.8

在我的CL程序中,有一个RUNJVA调用,它运行一个依赖于java1.8的jar文件。我只想在IBMi机器具有Java1.8时运行该命令

在IBMi上有很多方法可以查看java版本,但要以编程方式检查版本,我需要变量中的版本信息

一种方法是运行命令

RUNJVA类*版本输出*打印

并从spool文件中读取版本。然而,这种方法应该有效,但我正在寻找更无缝的方法。另外,读取spool文件以获取信息似乎不是一个好方法

尝试以下操作:


使用RUNRMTCMD执行“java-version”。捕获输出或错误,解析并找出版本。

我不确定这是否被认为是优雅的,但您至少不必处理spool文件。我将java-version的输出写入一个数据区域,然后您可以获取该数据区域:

创建一个数据区域来保存java_版本文件第一行的值。您可以将以下内容添加到您的CL中:

QSH CMD'java-version 2>/some/IFSdir/java_version'

QSH CMD'head-n1/some/IFSdir/java|u version | datarea-w/qsys.lib/doug .lib/testing.dtaara'


然后只需将数据区域抓取到一个变量中并在其中求值。

尝试System.getPropertyjava.version@BorisChistov这是我们在java中可以做的事情。我必须在CL中检查,然后运行java。为什么必须先检查?请注意,您可以为java 1.2编译主类,该类应该在I上可用的任何JVM上运行,即使jar的其余部分是为java 8编译的。然后,您的java类可以明确地尝试调用java 8代码,如果JVM不兼容,则会优雅地失败。任何关于字符串的启发性研究都可能在以后失败,就像Oracle JVMI所发生的那样,我可能已经考虑过了下面的答案。如果您针对不正确的JDK版本执行jar,在CL中会发生什么?在CL中是否有可以使用MONMSG监视的消息?我不想远程运行命令。我想检查它是否与我的应用程序运行的系统相同。你能再解释一下吗。